Hibernate快速入门

1.hibernate.cfg.xml Hibernate配置文件

可以使用XML或者是annotation配置持久类.

 

2. 使用XML配置持久类mapping

(1) User.hdb.xml

(2)UserIdCard.hbm.xml

(3) Address.hbm.xml

(4) Message.hbm.xml

 

3. POJO

Address.java

 

Message.java

 

 

User.java

 

UserIdCard.java

 

TestHibernate.java

 

4. 注意事项.

(1) User <-> UserIdCard 是OneToOne, XML配置lazy没有lazy="true", annotation虽然fetch=FetchType.LAZY, 其实不生效的, load User对象的时候一般hibernate会主动load UserIdCard对象, 使用left outter join.

这里使用的是公用主键, 使用外键配置文档有例子(XML注释部分)。

注意使用User user = (user) session.createQuery().uniqueResult(); 和session.load(User.class, "userIDxxx");生成的SQL, 注意调优, fetch join, outter join等. 

Annotation配置的UserIdCard.user不写lazy的话, load User by ID 默认会User left join UserIdCard left join User, 有点奇怪?

 

(2) User <-> Address OneToMany and ManyToOne,  XML配<many-to-one lazy没有true, 不配置lazy, load Address的时候不会去load User, annotation配置@ManyToOne的时候不加lazy的话会自动load User, 有点不一样.

 

(3)<many-to-many> 和@ManyToMany就inverse="true"的一方不去维护关联表UserMessage更新, 在这里User.setMessages()之后session会更新UserMessage表, 但是Message.setUser()后不会更新. 双向的关联时候为了避免一些表的键的冲突, 甚至是减少生成的SQL.

 

(4) Hibernate entity/annotation reference和hibernate reference有关于mapping的更详细全面配置说明.

(5) 这里都是双向关联, 根据应用设置关联, lazy, fetch 方式.

(6) Hibernate是持久层的一种选择方案, 符合关系型数据库设计准则, 稳定成熟的一个方案, 能够较好解决大多数问题 但是它存在缓存, 对于多个应用更新采访同一服务器, 或者是 以为数据库为中心的业务开发(使用存储过程等) 应注意缓存屏蔽; 动态表,  对于现有一些系统(使用JDBC等)升级, 要谨慎设置使用.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值