- 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机制:双向维护外键,在一和多的那一方都配置外键。