hibernate配置文件简介,以及主键生成策略







View 表示层 View 
Action/sevlet/xx 数据
Jsp 模板
-----------------------------------
Service 业务层
Dao 数据访问层
-----
MySQL, Oracle, SqlServer, Db2, ...




MySQLDaoImpl
OracleDaoImpl




MVC




JDBC
SQL


==============================




配置文件(xml方式添加,也可以java代码手动添加 new Configure().addClass(User.class)自动搜索当前类所在包的user对象):
hibernate.cfg.xml
对象-->xxx.hbm.xml




全限定名  com.leigedomain.User
简单名称  User






假设共有25(count)条记录,每页显示10(pageCount)条,则共3页,页码为pageCode。


firstResult maxResults
----------------------------------------
第1页 0 10
第2页 10 10
第3页 20 10




total / pageSize
total % pageSize 
公式:           (pageCode-1)*pageCount         pageCount
  


Session




SQL
查询的是表和表中的字段。
不区分大小写


HQL
Hibernate Query Language
与SQL相似
查询的是对象和对象中的属性。
关键字不区分大小写,但类名与属性名区分大小写。




==========================================================




API
1,API简介。
2,Session中的方法。
3,查询:HQL与Criteria


配置:
1,主配置文件
2,映射文件
映射基础
普通属性
主键
集合属性
关联关系
一对多/多对一
多对多
一对一
继承结构




-----------------------------------
-- API简介


Configuration 配置
configure()
configure(String resource)
addResource(String resource) 导入一个指定位置的映射文件
addClass(Class clazz) 导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的映射文件
buildSessionFactory()


SessionFactory Session工厂
openSession()
getCurrentSession()
close()


Session 很重要的一个对象
操作对象的方法
save(Object)
update(Object)
delete(Object)
查询的方法
createQuery(String) --> Query
createCriteria(Class)
管理事务的方法
beginTransaction() --> Transaction
getTransaction()   --> Transaction 获取当前Session中关联的事务对象
其他的方法
...


Transaction 事务
commit()
rollback()


Query 查询
list() 查询一个结果集合。
uniqueResult() 查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛异常。
...




--------------------------------


Hibernate主配置文件


1,配置的key前面的hibernate.前缀 可以有,也可以没有。如hibernate.dialect或dialect都可以。
2,按作用可分为三类:
1,数据库信息
<property ...>
方言、JdbcUrl、驱动、用户名、密码
2,导入映射文件
<mapping ...>
3,其他配置
<property ...>
show_sql 显示生成的SQL语句
format_sql 格式化生成的SQL语句
hbm2ddl.auto 自动生成表结构
hibernate.hbm2ddl.auto
生成表结构的两种方式:
1,hbm2ddl.auto
2,使用SchemaExport工具类
注意:只能建表,不能建库




==============
主键:
如果是数字,建议使用包装类型。


identity
sequence
hilo
native
assigned
uuid
foreign

...

hibernate中常用的主键生成策略,大家可以去官方文档查看www.hibernate.org:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.itcast.d_hbm_id">
	
	<class name="User" table="t_user">
		
		<!-- id元素用于映射主键。
			子元素generator是用于指定主键生成策略的。
		 -->
		<id name="id">
			<!-- identity:使用数据库的自动增长策略,不是所有数据库都支持,比如oracle就不支持 
            <generator class="identity"/>
			-->

			<!-- sequence:在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence)
				在使用Oracle数据库时可以使用这一个
            <generator class="sequence"/>
 			-->
            
            <!-- hilo,使用高低位算法生成主键值。
            	只需要一张额外表,所有的数据都支持。
            <generator class="hilo">
                <param name="table">hi_value</param>
                <param name="column">next_value</param>
                <param name="max_lo">100</param>
        	</generator>
        	 -->
        	
        	<!-- 根据底层数据库的能力选择 identity、sequence 或者 hilo中的一个。
        	<generator class="native"></generator>
        	 -->

			<!-- increment:由Hibernate维护的自动增长。
				先查询当前最大的id值,再加1使用
				不推荐使用,因为在多线程下会问题。
        	<generator class="increment"></generator>
			-->
            
            <!-- assigned:手工指定主键值  
        	<generator class="assigned"></generator>
            -->

  <!-- foreign:使用外部表的字段作为主键
        	<generator class="foreign"></generator>
            -->

			<!-- uuid:由Hibernate自动生成UUID并指定为主键值。  -->
        	<generator class="uuid"></generator>

		</id>
		
		<property name="name"/>
	</class>
	
</hibernate-mapping>




你可能感兴趣的:(hibernate配置文件简介,以及主键生成策略)