-
(1)创建Hibernate的配置文件(hibernate.cfg.xml) (2)创建持久化类 (3)创建对象-关系映射文件 (4)通过HIbernate API编写访问数据库的代码 导入hibernate必须的jar包:hibernate-release-4.2.4.Final\lib\required; 导入Mysql的JDBCjar包:mysql-connecttor-java-5.1.7-bin.jar; 导入Junit4的jar包:junit-4.10.jar查看全部
-
总结: 0.Junit类的执行顺序是@Before(初始化方法)|@Test(测试方法)|@After(关闭资源) 任何想要测试的方法都写在@Test中,注意!区分大小写的,首字母必须大写 一般@After都是destory()方法,用于关闭数据及一些善后操作。 1.刚开始插入数据,需要将cfg.xml文件里面的hbm2ddl.auto改为create,而不影响表结构的则用update.【create会覆盖原来的表而upadte只是更新表】 2.关于testSaveStudents里面的几个问题: 2.1当hbm.xml文件中的<generator class="native"></generator>为native时,不管你给setId设置任何值都不起作用,因为他是根据你本地的数据库来决定的,如果是mysql就是increment自动增长赋值(从1开始),若是oracle则是采用序列赋值。 2.2自动提交事务的写法 session.doWork(new Work(){ @Override public void execute() throws SQLException{ Connetcion.setAutoCommit(true);//自动提交事务 } }); 【注】使用了自动提交事务,就不需要开启事务[transcation = seesion.beginTransaction();]以及提交事务[transaction.commit();] 3.如果不是自动提交事务,需要开启事务以及提交。因为没有提交的话,他只是保存到Session对象中而没有提交到数据库中,所以数据库中的信息是没有变化的,所以删、改都需要开启事务才行!! 【如果只进行保存操作,自动提交事务即可。若还需要其他的操作,还是需要在外面开启事务对象】 4.get和load的区别 4.1 get是马上提交并返回信息,打不打印s都会返回信息 而load需要打印s才能返回信息。【注:如果你需要s的完整信息,需要在 stuents类中去重写toString()方法即可】 4.2 当没有数据返回时,get返回null,load会报错。查看全部
-
get与load区别2查看全部
-
get和load方法的区别1查看全部
-
关于时间与日历类型的映射查看全部
-
基本类型在XXX.hbm.xml中的type的写法查看全部
-
单一主键:指表中由某一列来充当主键。 assigned:由java应用程序负责生成(手工赋值) native:由底层数据库自动生成标识符,跟数据库密切相关。如果是mysql就是increment,如果是oracle就是sequence[序列]... assigned是指主键是由人工分配的,而native则指主键值由库自动给出。查看全部
-
openSession与getCurrentSession的区别: 1.getCurrentSession在事务提交或者回滚之后会自动关闭,而openSession需要你手动关闭。如果使用openSession而没有手动关闭,多次之后会导致连接池溢出。 2.openSession每次创建新的session对象,getCurrentSession使用现有的session对象查看全部
-
2种方法获得session: 1)session = sessionFactory.openSession(); 2)session = sessionFactory.getCurrentSession(); ---------------------------注:-------------------------------------- 如果是使用getCurrentSession需要在hibernate.cfg.xml文件中进行配置: 1)如果是本地事务(idbc事务) <propertyname="hibernate.current_session_context_class">thread</property> 2)如果是全局事务(jta事务) <propertyname="hibernate.current_session_context_class">jta</property> ----------------------------------------------------------------------- 一篇关于这方面的博客;(值得研究!!) http://aubergine-kang.iteye.com/blog/1306054http://aubergine-kang.iteye.com/blog/1306054 结论: (1)openSession()得到得session可以在显式开启事务的环境中使用,也可以在不开启事务的环境中使用(进行查询);getCurrentSession()必须在显式开启事务环境中使用。 (2)openSession()是否显式开启事务决定了session得到连接的时机不同。不开启事务的情况下数据库连接是在创建Statement时获得。因此在配置二级缓存的情况get()对象时,如果二级缓存中有需要的对象时,不会占用数据库连接。相反开启事务的情况下,无论二级缓存中是否有对象,多会占用数据库连接。 (3)getCurrentSession()总会占用数据库连接。查看全部
-
1.hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式。若果保存对象时,不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。如果想hibernate像jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式。查看全部
-
hibernate不建议直接使用jdbc的connection操作数据库,而是通过使用session操作数据库。 session与connection是多对一关系,每个session都有一个与之对应的connetion,一个connection不同时刻可以供多个session使用。查看全部
-
hibernate执行流程查看全部
-
hibernate.cfg.xml常用配置。查看全部
-
Junit测试调用顺序 1.先执行@Before:初始化方法 2.再执行@Test:测试方法 3.最后执行@After:释放资源查看全部
-
1.创建hibernate Configuration File【cfg.xml】文件 2.创建持久化类 2.1必须是个公有的类 2.2提供公有的不带参数的默认的构造方法 2.3属性私有 2.4属性setter/getter封装 3.创建Hibernate XML Mapping file【hbm.xml】文件 4.在cfg.xml文件中配置<mapping resource="Students.hbm.xml"></mapping>查看全部
举报
0/150
提交
取消