读书人

hibernatelt;1gt;入门

发布时间: 2012-09-02 21:00:34 作者: rapoo

hibernate<1>-----入门
User.java

package cn.anycall.hibernate.domain;import java.util.Date;public class User {private int id;private String name;private Date birthday;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}}

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 package="cn.anycall.hibernate.domain"><class name="User" table="user"><id name="id" column="id"><generator name="code"><!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">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///test</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hbm2ddl.auto">create</property><property name="show_sql">true</property><mapping resource="cn/anycall/hibernate/domain/User.hbm.xml"/></session-factory></hibernate-configuration>

HibernateUtil.java
package cn.anycall.hibernate;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public final class HibernateUtil {private static SessionFactory sessionFactory;public static SessionFactory getSessionFactory() {return sessionFactory;}public static void setSessionFactory(SessionFactory sessionFactory) {HibernateUtil.sessionFactory = sessionFactory;}private HibernateUtil(){}public static Session getSession(){return getSessionFactory().openSession();}static{Configuration cfg = new Configuration();cfg.configure();sessionFactory = cfg.buildSessionFactory();}}

Base.java
package cn.anycall.hibernate;import java.util.Date;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.Transaction;import cn.anycall.hibernate.domain.User;public class Base {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubUser user = new User();user.setBirthday(new Date());user.setName("name");addUser(user);System.out.println("id:"+user.getId());User u = getUser(user.getId());System.out.println(u.getName());}static void addUser(User user){Session s = null;Transaction tx = null;try{s = HibernateUtil.getSession();tx = s.beginTransaction();s.save(user);Class userClass = User.class;User user1 = (User)s.load(userClass, 1);System.out.println(user1.getName());tx.commit();}catch(HibernateException e){if(tx !=null)tx.rollback();throw e;}finally{if(s !=null)s.close();}}static void addUser1(User user){Session s = null;Transaction tx = null;try{s = HibernateUtil.getSession();tx = s.beginTransaction();s.save(user);tx.commit();}finally{if(s !=null)s.close();}}static User getUser(int id){Session s = null;try{s = HibernateUtil.getSession();Class userClass = User.class;User user = (User)s.get(userClass, id);return user;}finally{if(s !=null)s.close();}}}


总结:
1.save,persist保存数据,persist在事物外不会产生insert语句。
2.delete,删除对象。
3.update,更新对象,如果数据库中没有记录,会出现异常。
4.get,根据Id查,会立刻访问数据库。
5.load,根据Id查,返回的是代理,不会立刻访问数据库。
6.saveOrUpdate,merge,根据Id和version的值来确定是save或者是update,调用merge你的对象还是托管的。
7.lock,把对象变成持久对象,但不会同步对象的状态。

读书人网 >软件架构设计

热点推荐