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

hibernate-annotation容易傻瓜实例

2012-10-14 
hibernate-annotation简单傻瓜实例因为用到了hibernate-annotation,结果发现简直解放我好多事情,几乎彻底

hibernate-annotation简单傻瓜实例

因为用到了hibernate-annotation,结果发现简直解放我好多事情,几乎彻底不用操心数据库了,贴出实例,注:代码是别人写的,我只是实现下而已哈

?

用到的包包:

?

?

<classpathentry kind="lib" path="D:/maven/Repository/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar"/><classpathentry kind="lib" path="D:/maven/Repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar"/><classpathentry kind="lib" path="D:/maven/Repository/ejb3-persistence.jar"/><classpathentry kind="lib" path="D:/maven/Repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/><classpathentry kind="lib" path="D:/maven/Repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar"/><classpathentry kind="lib" path="D:/maven/Repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"/><classpathentry kind="lib" path="D:/maven/Repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar"/><classpathentry kind="lib" path="D:/maven/Repository/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar"/><classpathentry kind="lib" path="D:/maven/Repository/cglib/cglib/2.1_3/cglib-2.1_3.jar"/><classpathentry kind="lib" path="D:/maven/Repository/asm/asm/1.5.3/asm-1.5.3.jar"/><classpathentry kind="lib" path="D:/maven/Repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>

??

?

?

?

首先实体类:

?

package test.hibernate.annotation;import java.util.LinkedList;import java.util.List;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.Transient;import org.hibernate.annotations.GenericGenerator;@SuppressWarnings("serial")@Entity@Tablepublic class Person implements java.io.Serializable {private Integer id;private String name;private String sex;private Integer age;private List list = new LinkedList();public Person() {}public Person(Integer id) {this.id = id;}// Property accessors@Id@GeneratedValue(generator = "paymentableGenerator")@GenericGenerator(name = "paymentableGenerator", strategy = "increment")public Integer getId() {return this.id;}public void setId(Integer id) {this.id = id;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getSex() {return this.sex;}public void setSex(String sex) {this.sex = sex;}public Integer getAge() {return this.age;}public void setAge(Integer age) {this.age = age;}@Transientpublic List getList() {return list;}public void setList(List list) {this.list = list;}}

?

?

注释就不跟大家解释了,具体请参见hibernate-annotation文档哈。我主要让大家先跑起来这个实例

?

?

接下来HibernateUtil类:

?

?

package hello;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import test.hibernate.annotation.Person;public class HibernateUtil {private static final SessionFactory sessionFactory;public static final ThreadLocal<Session> session = new ThreadLocal<Session>();static {try {sessionFactory = new AnnotationConfiguration()//注意: 建立 SessionFactory于前面的不同.addPackage("test.hibernate.annotation").addAnnotatedClass(Person.class).configure().buildSessionFactory();} catch (Throwable ex) {throw new ExceptionInInitializerError(ex);}}public static Session getSession() throws HibernateException {return sessionFactory.openSession();}public static Session currentSession() throws HibernateException {Session s = session.get();if (s == null) {s = sessionFactory.openSession();session.set(s);}return s;}public static void closeSession() throws HibernateException {Session s = session.get();if (s != null) {s.close();}session.set(null);}}

?

?

测试类:

?

?

package test.hibernate;import hello.HibernateUtil;import org.hibernate.Session;import org.hibernate.Transaction;import test.hibernate.annotation.Person;public class Test {public static void main(String[] args) {Session s = HibernateUtil.currentSession();Transaction tx = s.beginTransaction();//    Person p = (Person) s.load(Person.class, 1);//    System.out.println(p.getName());Person p = new Person();p.setAge(19);p.setName("icerain");p.setSex("male");s.save(p);s.flush();/*Person p2 = (Person) s.get(Person.class, new Integer(1));System.out.println(p2.getName());p2.setName("ice..");s.saveOrUpdate(p2);s.flush();Person p3 = (Person) s.get(Person.class, new Integer(2));System.out.println(p3.getName());s.delete(p3);*/tx.commit();try {System.out.println(p.getName());} catch (Exception e) {e.printStackTrace();}HibernateUtil.closeSession();}}

?

?

?

hibernate.cfg.xml:放在classpath目录下,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.driver_class">org.gjt.mm.mysql.Driver</property><property name="hibernate.connection.password">3645466</property><property name="hibernate.connection.url">jdbc:mysql://localhost/test</property><property name="hibernate.connection.username">root</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property><property name="hibernate.transaction.auto_close_session">false</property><property name="hibernate.hbm2ddl.auto">update</property></session-factory></hibernate-configuration>

?

?

?

哦了,跑test.java吧,数据库表hibernate会根据person实体类自动创建。

热点排行