JTA实现两阶段提交,全局事务,对多个数据库起作用
JDBC是本地事务,只对单一数据库起作用
Hibernate基本映射
实体类 –〉表
实体类中的普通属性 –〉表字段
采用<class>标签映射成数据库表,通过<property>标签将普通属性映射成表字段
所谓普通属性指不包括自定义类,集合和树组等
auto-import:如果HQL中所需要得类和所在的类不再一个包内如果此属性为false就会报错,默认为true
class属性:
dynamic-update:如果为true则只发出修改字段的update语句,默认为false
dynamic-insert:如果为true,为null的字段不会放到insert语句中
lazy:默认为true
id属性:
必须配到第一个
name:属性column属性 type:类型 length限制字段长度
<generator class=”uuid” />可以制定increment,缺电如果有两个jvm(级群环境),不能保证生成唯一
identity:自增 mysql
sequence: oracle
uuid是hibernate生成的,不是数据库生成的
guid:sql server,mysql
native:自动选择
assigned:手动分配
<property>: name, column,type
update, insert:如果设置成false,则生成的语句不会出现这些字段
unique:唯一性,比如姓名唯一
not-null:默认时可以为空
uuid方式比自增效率合并发行都要好,缺点是字符串查找比数字慢
注意:如果实体类和实体类的属性和sql中的关键字重复,那么必须采用table或column重新命名
实体类设计原则:
必须要有无参构造方法,
提供一个标示(identifier)属性(可选)
使用非final得类(可选),影响lazy
提供get,set方法
可以使用hibernate.connection.pool设置池
可以使用第三方的池
hibernate.hbm2ddl自动建表