首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate学习一之基础工具

2012-10-29 
hibernate学习1之基础工具//根据映射文件生成数据库表import org.hibernate.cfg.Configurationimport org

hibernate学习1之基础工具
//根据映射文件生成数据库表

import org.hibernate.cfg.Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport;public class ExportDB {public static void main(String[] args) {//读取hibernate.cfg.xml文件Configuration cfg = new Configuration().configure();SchemaExport export = new SchemaExport(cfg);export.create(true, true);}}


//session工具类
import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtils {private static SessionFactory factory;static {try {Configuration cfg = new Configuration().configure();factory = cfg.buildSessionFactory();}catch(Exception e) {e.printStackTrace();}}public static SessionFactory getSessionFactory() {return factory;}public static Session getSession() {return factory.openSession();}public static void closeSession(Session session) {if (session != null) {if (session.isOpen()) {session.close();}}}}

hibernate配置文件
<!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.url">jdbc:mysql://localhost/hibernate_session</property><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">bjsxt</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hibernate.show_sql">true</property><mapping resource="com/bjsxt/hibernate/User.hbm.xml"/></session-factory></hibernate-configuration>

//实体类
public class User {private String id;private String name;private String password;private Date createTime;private Date expireTime;//setter&getter略}

//映射文件User.hbm.xml
<?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="com.bjsxt.hibernate.User"><id name="id"><generator name="code">import java.util.Iterator;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import junit.framework.TestCase;public class QueryTest extends TestCase {public void testQuery() {Session session = null;try {session = HibernateUtils.getSession();session.beginTransaction();Query query = session.createQuery("from User");query.setFirstResult(2);//分页query.setMaxResults(2);List userList = query.list();for (Iterator iter=userList.iterator(); iter.hasNext();) {User user = (User)iter.next();System.out.println(user.getId());System.out.println(user.getName());}session.getTransaction().commit();}catch(Exception e) {e.printStackTrace();session.getTransaction().rollback();}finally {HibernateUtils.closeSession(session);}}        public void testSave() {Session session = null;Transaction tx = null;User user = null;try {session = HibernateUtils.getSession();tx = session.beginTransaction();//Transient(不稳定)状态user = new User();user.setName("李四");user.setPassword("123");user.setCreateTime(new Date());user.setExpireTime(new Date());//persistent(持久)状态,当属性发生改变的时候,hibernate会自动和数据库同步session.save(user);user.setName("王五");//数据库里存的是“李四”还是“王五”呢?:)tx.commit();}catch(Exception e) {e.printStackTrace();tx.rollback();}finally {HibernateUtils.closeSession(session);}}}

热点排行