Hibernate入门
来源:互联网 发布:江南大学北美学院 知乎 编辑:程序博客网 时间:2024/06/16 16:33
1、在pom中引入hibernate和h2内存数据库
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.3.176</version></dependency><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.3.1.Final</version></dependency>
2、目录结构及代码
hibernate.cfg.xml放在代码之外,和最终的class目录平级。
user.hbm.xml放在包内,和class文件同包。
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">org.h2.Driver</property><property name="hibernate.connection.url">jdbc:h2:./h2db/sxaz42b4</property><property name="hibernate.connection.username">sa</property><property name="hibernate.connection.password">sa</property><property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property><property name="hibernate.hbm2ddl.auto">update</property><property name="hibernate.show_sql">true</property><mapping resource="gaofeng/db/User.hbm.xml" /></session-factory></hibernate-configuration>
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="gaofeng.db.User" table="User"> <id name="Id" column="Id"> <generator class="increment" /> </id> <property name="name" column="name" /> </class></hibernate-mapping>
package gaofeng.db;public class User {public int getId() {return Id;}public void setId(int id) {Id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}private int Id;private String name;}
package gaofeng.db;import java.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;public class UserDao {public Session session;public List<User> getAll(){@SuppressWarnings("unchecked")List<User> users = session.createQuery("from User").list();for (User user : users) {System.out.println(user.getId() + ":" + user.getName());}return users;}public List<User> getOnePage(){@SuppressWarnings("unchecked")List<User> users = session.createQuery("from User").setFirstResult(2).setMaxResults(2).list();for (User user : users) {System.out.println(user.getId() + ":" + user.getName());}return users;}public User load(int id){try{return (User) session.load(User.class, id);}catch(Exception e){e.printStackTrace();}return null;}public void add(User user){Transaction transaction = session.beginTransaction();try{session.save(user);transaction.commit();}catch(Exception e){transaction.rollback();}}public void del(User user){Transaction transaction = session.beginTransaction();try{session.delete(user);;transaction.commit();}catch(Exception e){transaction.rollback();}}public void update(User user){Transaction transaction = session.beginTransaction();try{session.update(user);transaction.commit();}catch(Exception e){transaction.rollback();}}public void init(){ Configuration cfg=new Configuration().configure(); StandardServiceRegistryBuilder ssrb=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()); ServiceRegistry service= ssrb.build(); SessionFactory factory=cfg.buildSessionFactory(service); session= factory.openSession(); }public void closeSession() {if(session!=null) session.close();}}
package gaofeng.db;import org.hibernate.Transaction;import org.junit.After;import org.junit.Before;import org.junit.Test;public class UserDaoTest {UserDao dao = new UserDao();@Beforepublic void setUp() throws Exception {dao.init();}@Afterpublic void tearDown() throws Exception {dao.getAll();dao.closeSession();}@Testpublic void test() {User user = new User();user.setId(2);user.setName("gaofeng"+System.currentTimeMillis());Transaction trx = dao.session.beginTransaction();dao.session.saveOrUpdate(user);trx.commit();}@Testpublic void test2() {User user = dao.load(2);user.setName("gaofeng"+System.currentTimeMillis());Transaction trx = dao.session.beginTransaction();dao.session.saveOrUpdate(user);dao.session.clear();trx.commit();}@Testpublic void test3() {Transaction trx = dao.session.beginTransaction();dao.session.createSQLQuery("update User set name='gaofeng' ").executeUpdate();trx.commit();}}
4、会话工厂是一个重量级对象,线程安全的,里面有大量的二级缓存,原则上一个数据库只应该有一个会话工厂。
会话时一个轻量级对象,非线程安全,里面有缓存信息,有会话池管理,可以随用随创建。
5、对象有瞬时态,离线态,持久化态。 持久化态时,不管中间做了多少次操作,只是最终关闭会话时,与持久化池中的内容比较,不相同,才发update语句。
update、save、deltete、需要提交事务。
load默认是延迟加载的,get不是延迟加载的。
由于load的记录可能不存在,所以入库时,尽量用saveOrUpdate。
clear可以清除当前会话中的操作。
0 0
- Hibernate 入门
- Hibernate 入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate 入门
- Hibernate入门
- Hibernate入门
- Hibernate 入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- Hibernate入门
- hibernate 入门
- Hibernate入门
- hibernate入门
- 最大子回文串
- hdu 5745 2016 Multi-University Training Contest 2 (暴力)
- linux的一些简单命令
- Session机制详解
- HTTP学习笔记2
- Hibernate入门
- ButterKnife插件使用
- nefu 84(拓展欧几里德)
- LeetCode 111. Minimum Depth of Binary Tree
- sharepoint 2016 学习系列篇(25)-文档库应用篇-(7)列表视图设置
- java基础知识陷阱
- servlet
- sort,qsort排序
- shell中各种括号的作用()、(())、[]、[[]]、{}