知识大全 Hibernate Annotations 实战介绍

Posted 数据库

篇首语:无私是稀有的道德,因为从它身上是无利可图的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate Annotations 实战介绍相关的知识,希望对你有一定的参考价值。

Hibernate Annotations 实战介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

从 hbm xml 到 Annotations  下面让我们先看一个通常用 hbm xml 映射文件的例子 有 个类 HibernateUtil java 也就是 Hibernate文档中推荐的工具类 Person java  Test java 测试用的类 都在test hibernate 包中 每个类的代码如下:

  HibernateUtil:

   package test hibernate; import hibernate HibernateException; import hibernate Session; import hibernate SessionFactory; import hibernate cfg Configuration; public class HibernateUtil    public static final SessionFactory sessionFactory;       static      try        sessionFactory = new Configuration()               nfigure()                buildSessionFactory();      catch (HibernateException e)        // TODO Auto generated catch block               e printStackTrace();        throw new ExceptionInInitializerError(e);               public static final ThreadLocal<Session> session = new ThreadLocal<Session>();       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);   

  Person:

   package test hibernate; import java util LinkedList; import java util List; /**   *   */ @SuppressWarnings( serial ) public class Person implements java io Serializable    // Fields    private Integer id;    private String name;    private String sex;    private Integer age;    private List list = new LinkedList();    // Collection accessors    public List getList()      return list;       public void setList(List list)      this list = list;       /** default constructor */    public Person()       /** constructor with id */    public Person(Integer id)      this id = id;       // Property accessors    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;   

  Test:

   /*   * Created on   * @author   */ package test hibernate; import java sql SQLException; import hibernate FlushMode; import hibernate HibernateException; import hibernate Session; import hibernate Transaction; public class Test       public static void main(String [] args)      Session s = HibernateUtil currentSession();           Transaction tx = s beginTransaction();         //    Person p = (Person) s load(Person class ); //    System out println(p getName());      Person p = new Person();           p setAge( );      p setName( icerain );      p setSex( male );      s save(p);      s flush();      /*      Person p = (Person) s get(Person class new Integer( ));      System out println(p getName());      p setName( ice );      s saveOrUpdate(p );      s flush();      Person p = (Person) s get(Person class new Integer( ));      System out println(p getName());      s delete(p );      */           mit();       try        System out println(p getName());      catch (Exception e)        // TODO Auto generated catch block        e printStackTrace();                HibernateUtil closeSession();   

  hibernate cfg xml 配置文件如下 利用mysql 数据库

  <?xml version= encoding= UTF ?>

  <hibernate configuration>

  <session factory>

  <property name= nnection driver_class > gjt mm mysql Driver</property>

  <property name= nnection password >你的数据库密码</property>

  <property name= nnection url >jdbc:mysql://localhost/数据库名</property>

  <property name= nnection username >用户名</property>

  <property name= hibernate dialect > hibernate dialect MySQLDialect</property>

  <property name= show_sql >true</property>

  <property name= hibernate transaction factory_class > hibernate transaction JDBCTransactionFactory</property>

  <property name= hibernate transaction auto_close_session >false</property>

  <property name= hibernate hbm ddl auto >update</property>

  <mapping resource= test/hibernate/annotation/Person hbm xml />

  </session factory>

  </hibernate configuration>

  其中 配置了<property name= hibernate hbm ddl auto >update</property>属性 自动导入数据库ddl 生产的ddl sql语句如下

  create table person (id integer not null auto_increment name varchar( ) sex varchar( ) age integer person integer primary key (id))

  alter table person add index FKC E B C A C (person) add constraint FKC E B C A C foreign key (person) references person (id)

  而Person hbm xml 文件如下:

  <?xml version= ?>

  <hibernate mapping>

  <class name= test hibernate Person table= person >

  <id name= id type= integer >

  <column name= id />

  <generator class= native ></generator>

  </id>

  <property name= name type= string >

  <column name= name />

  </property>

  <property name= sex type= string >

  <column name= sex />

  </property>

  <property name= age type= integer >

  <column name= age />

  </property>

  <bag name= list cascade= all >

  <key column= person ></key>

  <one to many class= test hibernate Person />

  </bag>

  </class>

  </hibernate mapping>

  下面让我们看看利用 Hibernate Annotations 如何做 只要三个类 不再需要 hbm xml配置文件:

  还要把用到的两个jar文件 放入的类路径中 具体如何做 请参考  Hibernate Annotations 中文文档

  HibernateUtil java 也就是 Hibernate文档中推荐的工具类 Person java 一个持久化的类 Test java 测试用的类 都在test hibernate annotation 包中 每个类的代码如下:

  HibernateUtil

   package test hibernate annotation; import hibernate HibernateException; import hibernate Session; import hibernate SessionFactory; import hibernate cfg AnnotationConfiguration; import hibernate cfg Configuration; public class HibernateUtil    public static final SessionFactory sessionFactory;       static      try        sessionFactory = new AnnotationConfiguration()   //注意: 建立 SessionFactory于前面的不同                  addPackage( test hibernate annotation )                  addAnnotatedClass(Person class)                                  nfigure()                  buildSessionFactory();          //new Configuration(nfigure() buildSessionFactory();      catch (HibernateException e)        // TODO Auto generated catch block               e printStackTrace();        throw new ExceptionInInitializerError(e);               public static final ThreadLocal<Session> session = new ThreadLocal<Session>();       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);   

  Person:

   package test hibernate annotation; import java util LinkedList; import java util List; import javax persistence AccessType; import javax persistence Basic; import javax persistence Entity; import javax persistence GeneratorType; import javax persistence Id; import javax persistence OneToMany; import javax persistence Table; import javax persistence Transient; /**   *   */ @SuppressWarnings( serial ) @Entity(access = AccessType PROPERTY) //定义该类为实体类 @Table   //映射表 public class Person implements java io Serializable    // Fields    private Integer id;    private String name;    private String sex;    private Integer age;    private List list = new LinkedList();    // Constructors    /** default constructor */    public Person()       /** constructor with id */    public Person(Integer id)      this id = id;       // Property accessors    @Id    public Integer getId()      return this id;       public void setId(Integer id)      this id = id;       @Basic    public String getName()      return this name;       public void setName(String name)      this name = name;       @Basic    public String getSex()      return this sex;       public void setSex(String sex)      this sex = sex;       @Basic    public Integer getAge()      return this age;       public void setAge(Integer age)      this age = age;       @Transient  //由于本例不打算演示集合映射 所有声明该属性为 Transient    public List getList()      return list;       public void setList(List list)      this list = list;   

  注意该实体类中的属性都使用了默认值

  Test java 代码同上

  不需要了 hbm xml 映射文件 是不是简单了一些 给人认为简化了一些不是主要目的 主要是可以了解一下 EJB 的持久化机制 提高一下开发效率才是重要的

  好了 本例就完了 感觉怎么样了 欢迎你来批批

  PS:

  生成的数据库表 和 程序执行后的 数据库情况如下

  mysql> describe person;+ + + + + + +| Field  | Type         | Null | Key | Default |          Extra |+ + + + + + +| id     | int( )      | NO   | PRI | NULL    | auto_increment || name   | varchar( ) | YES  |     | NULL    |                || sex    | varchar( ) | YES  |     | NULL    |                || age    | int( )      | YES  |     | NULL    |                || person | int( )      | YES  | MUL | NULL    |                |+ + + + + + + rows in set ( sec)

  mysql> select * from person;+ + + + + +| id | name    |  sex |  age | person |+ + + + + +|  | icerain | male |   |   NULL |+ + + + + + row in set ( sec)

cha138/Article/program/Java/ky/201311/28051

相关参考

知识大全 Hibernate高级查询实战

Hibernate高级查询实战  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大家知道在Hibe

知识大全 Hibernate高级查询实战[2]

Hibernate高级查询实战[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  《取TOP结

知识大全 Hibernate高级查询实战[1]

Hibernate高级查询实战[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大家知道在H

知识大全 Groovy编程—Annotations的使用

Groovy编程—Annotations的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  从

知识大全 用Java Annotations管理对象生命周期

用JavaAnnotations管理对象生命周期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要

TAPI指标如何运用于实战

TAPI指标如何运用于实战?TAPI指标怎样运用于实战?TAPI指标的实战技巧是什么?TAPI指标的实战技巧TAPI指标的构造比较简单,其实战技巧也主要集中在TAPI曲线与TAPIMA曲线的交叉情况及

知识大全 Hibernate3.1与Hibernate3.2

Hibernate3.1与Hibernate3.2  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

OBV指标的实战技巧是什么?OBV指标的实战技巧有哪些

OBV指标的实战技巧是什么?OBV指标的实战技巧有哪些?相对于其他指标而言,OBV指标的研判最好是使用于上市两年并且上市以来一直下跌的新股,OBV指标的实战技巧主要集中在OBV曲线的形态及运行方向的方

PSY指标实战技巧:买卖信号

PSY指标实战技巧有哪些?PSY指标的实战技巧是什么?PSY指标的实战技巧。PSY指标的实战技巧在以钱龙为代表的股市分析软件上,PSY指标是由2根或以上曲线组成,这样也会象RSI、BIAS、WR等指标

使用DMI指标如何在实战中操作?如何在实战操作中使用DMI指标呢?

使用DMI指标如何在实战中操作?如何在实战操作中使用DMI指标呢?第一,当DMI指标中ADX的数值低于+DI的数值时,特别是低于20以下时,所有的指标显示的买入卖出信号都是无效信号。此外ADXR的数值