本文全部是自己理解所写,也为自己在将来工作中使用,如果那个大侠发现有错误的地方,麻烦帮助指正!谢谢!
hibernate可以配置多个数据库连接。通过配置多个hibernate的配置文件。使用
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();//调用默认的配置文件
SessionFactory sessionFactory = new Configuration().configure("new.cfg.xml").buildSessionFactory();//调用新的数据库的配置文件
主键生成器:
<generator class="指定生成器"></generator>
increment :从数据库中查询最大的id,取出id的值将id+1作为下次数据保存的id,此生成器不适合集群使用
identity:自己测试发现生成的id与increment没有什么区别
hilo:需要数据库对应相应的表来存储下一个主键,如hibernate配置文件中配置
<generator class="hilo">
<param name="table">hi_value</param> //存储的表
<param name="column">next_value</param>//下个id值的存储字段
<param name="max_lo">100</param>//间隔数
</generator>
如果得到的第一个id是1,那么下个id就是101
uuid:一定要注意是小写的,并且id的类型修改为String ,uuid将得到一个32位的16进制码
identity:对于支持标识的数据库使用( DB2,MYSQL等)
sequence:对于支持序列的数据库使用(ORACLE等),前提数据库中必须创建sequence,
<generator class="sequence">
<param name="sequence">序列名称</param> //存储的表
</generator>
Set属性:
cascade属性:
save-update : 级联更新,假设存在Custumer和Order两个类,custumer->order 当更新custumer类时自动更新order类。
delete:级联删除,当删除当前对象时会级联删除与之关联的所有对象。慎用!
all-delete-orphan:该属性包含了save-update和delete两种属性,当对象保存时级联保存所有相关联的对象,当删除当前对象 时 级联删除所有关联的对象。
inverse:当此属性为true的时候,相当于order是custumer的镜像,也就是说当更新custumer不会更新order对象,更新order时也不会级联更新custumer对象。