Hibernate注解的使用

来源:互联网 发布:高仿鞋进货渠道网络 编辑:程序博客网 时间:2024/06/07 03:11
 

Hibernate注解的使用

配置Weapon.Java,代码如下:

[java] view plain copy
 print?
  1. package com.hibernate.annotations.entity;  
  2.   
  3. import javax.persistence.Column;  
  4. import javax.persistence.Entity;  
  5. import javax.persistence.EntityResult;  
  6. import javax.persistence.FieldResult;  
  7. import javax.persistence.GeneratedValue;  
  8. import javax.persistence.GenerationType;  
  9. import javax.persistence.Id;  
  10. import javax.persistence.NamedNativeQuery;  
  11. import javax.persistence.NamedQuery;  
  12. import javax.persistence.SequenceGenerator;  
  13. import javax.persistence.SqlResultSetMapping;  
  14. import javax.persistence.Table;  
  15.   
  16. @Entity  
  17. @Table(name = "WEAPON")  
  18. //通过注解的方式使用命名查询  
  19. @NamedQuery(name = "namedQuery",query="from Weapon where id < :id")  
  20.   
  21. //通过注解的方式使用本地查询  
  22. @SqlResultSetMapping(name = "all_fields",entities={  
  23.         @EntityResult(entityClass= com.hibernate.annotations.entity.Weapon.class,  
  24.                 fields={  
  25.                     @FieldResult(name = "id",column="ID"),  
  26.                     @FieldResult(name = "name",column="NAME"),  
  27.                 }  
  28.         )  
  29.     }  
  30. )  
  31. @NamedNativeQuery(name = "nameeNativeQuery", query = "select * from WEAPON where id < :id",  
  32.         resultSetMapping="all_fields")  
  33.   
  34.           
  35. public class Weapon {  
  36.   
  37.     @SequenceGenerator(name = "seq",allocationSize = 1,initialValue = 1,sequenceName = "seq_weapon_pk")  
  38.     @Id  
  39.     @Column(name = "ID")  
  40.     @GeneratedValue(strategy=GenerationType.SEQUENCE,generator = "seq")  
  41.     private int id;  
  42.     private String name;  
  43.       
  44.       
  45.     public int getId() {  
  46.         return id;  
  47.     }  
  48.     public void setId(int id) {  
  49.         this.id = id;  
  50.     }  
  51.     public String getName() {  
  52.         return name;  
  53.     }  
  54.     public void setName(String name) {  
  55.         this.name = name;  
  56.     }  
  57.       
  58.       
  59. }  

关于注解的测试举例,TestAnnotations.java,代码如下:
[java] view plain copy
 print?
  1. package com.hibernate.annotations.entity;  
  2.   
  3. import java.util.Iterator;  
  4. import java.util.List;  
  5.   
  6. import org.hibernate.Query;  
  7. import org.hibernate.Session;  
  8. import org.hibernate.SessionFactory;  
  9. import org.hibernate.Transaction;  
  10. import org.hibernate.cfg.AnnotationConfiguration;  
  11.   
  12. public class TestAnnotations {  
  13.   
  14.     public static AnnotationConfiguration config = new AnnotationConfiguration();  
  15.     public static SessionFactory sessionFactory ;  
  16.     public static String config_file = "/hibernate.cfg.xml";  
  17.       
  18.     public static void main(String[] args) {  
  19. //      annotationTest1();  
  20. //      annotationTest2();  
  21.         annotationTest3();  
  22.     }  
  23.       
  24.     public static void annotationTest1(){  
  25.         //获得配置文件信息  
  26.         config.configure(config_file);  
  27.         //创建session工厂  
  28.         sessionFactory = config.buildSessionFactory();  
  29.         //创建Session对象(注意:正常开发环境下,应该优先当前进程中的session)  
  30.         Session session = sessionFactory.openSession();  
  31.           
  32.         //开启事务  
  33.         Transaction tran = session.beginTransaction();  
  34.         Weapon weapon = new Weapon();  
  35.         weapon.setName("屠鹰刀");  
  36.         session.save(weapon);  
  37.         tran.commit();  
  38.           
  39.         session.close();  
  40.           
  41.     }  
  42.     //使用命名查询进行数据查询  
  43.     public static void annotationTest2(){  
  44.         //获得配置文件信息  
  45.         config.configure(config_file);  
  46.         //创建session工厂  
  47.         sessionFactory = config.buildSessionFactory();  
  48.         //创建Session对象(注意:正常开发环境下,应该优先当前进程中的session)  
  49.         Session session = sessionFactory.openSession();  
  50.           
  51.   
  52.         Query query = session.getNamedQuery("namedQuery");  
  53.         query.setParameter("id"100);  
  54.         List<Weapon> list = query.list();  
  55.         Iterator<Weapon> it = list.iterator();  
  56.         while(it.hasNext()){  
  57.             Weapon w = it.next();  
  58.             System.out.println(w.getId() + "\t" + w.getName());  
  59.         }  
  60.         session.close();  
  61.           
  62.     }  
  63.       
  64.     //使用本地查询进行数据查询  
  65.     public static void annotationTest3(){  
  66.         //获得配置文件信息  
  67.         config.configure(config_file);  
  68.         //创建session工厂  
  69.         sessionFactory = config.buildSessionFactory();  
  70.         //创建Session对象(注意:正常开发环境下,应该优先当前进程中的session)  
  71.         Session session = sessionFactory.openSession();  
  72.           
  73.   
  74.         Query query = session.getNamedQuery("nameeNativeQuery");  
  75.         query.setParameter("id"100);  
  76.         List<Weapon> list = query.list();  
  77.         Iterator<Weapon> it = list.iterator();  
  78.         while(it.hasNext()){  
  79.             Weapon w = it.next();  
  80.             System.out.println(w.getId() + "\t" + w.getName());  
  81.         }  
  82.         session.close();  
  83.           
  84.     }  

0 0
原创粉丝点击