hibernate(一)

  1. mvc不是java独有的,采用分层的思想
//jdbc代码:
//加载驱动
Class clazz = Class.forname("com.mysql.jdbc.Driver");
//创建连接
Connection conn =  DriverManger.getConnection(url,username,password);
//对SQL进行预编译操作
String sql = "select * from user";
PreparedStatement pstm = conn.preparedStatement(sql);
//执行sql查询sql
ResultSet rs = pstm.executeQuery();
//遍历结果集
..
//释放资源
  • hibenate要求实体类里面有一个属性是唯一的
  • 不用手动创建表
  • 配置实体类和数据库中的表的---对应关系【映射关系】

---》配置文件(名称hbm.xml[建议以它为后缀名]和位置是固定的)

---》建立dtd约束(hibernate-mapping.dtd文件中有)

---》配置映射关系:

2.web项目启动时,只创建一个servletContext对象(所有的客户端共享数据,而session只针对一个客户端共享数据。),就比如说在hibernate操作的时候,只创建一个sessionFactory对象。

3.static{}, 中的内容会在该类加载时执行,作用是给全局的静态变量,或者常量导入初始值。

4.进程:真正占用内存空间的程序。是整个系统,

5.实体类中唯一的属性,对应表中唯一的字段

6.session.get(,);//第一个参数是实体类的class,第二个参数是id值。

7.当我们创建session的时候,会出现一级缓存。对应一个缓存,会创建一个快照区(副本)。返回的持久态对象里面,会放到一级缓存中,还会放在一级缓存区对应的快照区中。

8.在修改对象值的时候,也就是修改持久态对象的值,一级缓存中的内容会被改变,但是一级缓存区对应的快照区中的内容,不会被修改。(为了后面的更新)提交事务的时候,会比较这2个地方的内容是否相同,如果不同的话,才吧一级缓存中的内容更新到数据库。【设置新值是否和旧值一样,如果一样的话,不更新。】

9.在一级缓存中,第二次查询到的缓存是内存中的值。缓存中存的不是整个对象,存的是对象的值。

10.让Hbernate中创建的session与与本地session进行绑定,可以保证多个用户访问的时候,依然是单线程对象。threadLocal就是与本地线程进行绑定的。帮我们实现与本地线程绑定session。当我们与本地线程进行帮的时候,当线程结束的时候,session也就自动关闭。不需要我们手动进行关闭了。【自己openSession()的需要关闭,如果是绑定的本地线程,getCurrentSession()就需要关闭。】

  • 多对多关系映射,第三张表里面,至少有2个字段,作为外键,分别指向2个表的主键。
  • 使用集合比较多的数据,使用set集合,private Set<LinkMan> setLinkMan = new HashMap<LinkMan>();
  • hibernate机制:双向维护外键,在一和多的那一方都配置外键。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值