您的位置:首页 > 编程语言 > Java开发

用myeclipse实现hibernate注解简单例子

2016-05-10 14:33 726 查看

目录:

配置文件

利用Hibernate的逆向工程生成

测试代码

运行效果

配置文件:

hibernate.cfg.xml<?xml version='1.0' encoding='UTF-8'?>  <!DOCTYPE hibernate-configuration PUBLIC            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"            "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">      <!-- Generated by MyEclipse Hibernate Tools.                   -->   <hibernate-configuration>       <session-factory>     <property name="dialect">      org.hibernate.dialect.MySQLDialect     </property>     <property name="connection.url">      jdbc:mysql://localhost:3307/users     </property>     <property name="connection.username">root</property>     <property name="connection.password">root</property>     <property name="connection.driver_class">      com.mysql.jdbc.Driver     </property>     <property name="myeclipse.connection.profile">      mysqlusers     </property>     <property name="format_sql">true</property>     <property name="show_sql">true</property>     <property name="current_session_context_class">thread</property>     <mapping class="com.itcast.cn.demol.Product" />     <mapping class="com.itcast.cn.demol.Category" />       </session-factory>      </hibernate-configuration></span>  

利用Hibernate的逆向工程生成:

Category.javaProduct.java   Category.java package com.itcast.cn.demol;        import java.util.HashSet;    import java.util.Set;        // 标准注解       import javax.persistence.CascadeType;   import javax.persistence.Column;   import javax.persistence.Entity;   import javax.persistence.FetchType;   import javax.persistence.GeneratedValue;   import javax.persistence.Id;   import javax.persistence.OneToMany;   import javax.persistence.Table;      //增加的注解      import org.hibernate.annotations.GenericGenerator;      //当前的类是一个持久化类,是Category这个类。他映射了一个表category。所对应的 数据库是users   //这句:@Table(name = "category", catalog = "users")  可以省略   @Entity   @Table(name = "category", catalog = "users")      public class Category implements java.io.Serializable {       private static final long serialVersionUID = 3240281547213597385L;    private Integer id;    private String name;    private String description;    private Set<Product> products = new HashSet<Product>(0);           public Category() {    }       public Category(String name, String description, Set<Product> products) {     this.name = name;     this.description = description;     this.products = products;    }       // 主键 :@Id    主键生成方式:strategy = "increment"    //映射表中id这个字段,不能为空,并且是唯一的    @GenericGenerator(name = "generator", strategy = "increment")    @Id    @GeneratedValue(generator = "generator")    @Column(name = "id", unique = true, nullable = false)    public Integer getId() {     return this.id;    }       public void setId(Integer id) {     this.id = id;    }       //映射表中name这个字段 ,长度是500    @Column(name = "name", length = 500)    public String getName() {     return this.name;    }       public void setName(String name) {     this.name = name;    }       //映射表中description这个字段 ,长度是500    @Column(name = "description", length = 500)    public String getDescription() {     return this.description;    }       public void setDescription(String description) {     this.description = description;    }      //级联操作:cascade = CascadeType.ALL    //延迟加载:fetch = FetchType.LAZY    //映射:mappedBy = "category"    //一对多方式    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "category")    public Set<Product> getProducts() {     return this.products;    }       public void setProducts(Set<Product> products) {     this.products = products;    }      }</span>  

Product.java

package com.itcast.cn.demol;   import javax.persistence.Column;   import javax.persistence.Entity;   import javax.persistence.FetchType;   import javax.persistence.GeneratedValue;   import javax.persistence.Id;   import javax.persistence.JoinColumn;   import javax.persistence.ManyToOne;   import javax.persistence.Table;   import org.hibernate.annotations.GenericGenerator;         @Entity   @Table(name = "product", catalog = "users")   public class Product implements java.io.Serializable {       private static final long serialVersionUID = -1546206493725028472L;    private Integer id;    private Category category;    private String name;    private String price;    private String descripton;           public Product() {    }       public Product(Category category, String name, String price,      String descripton) {     this.category = category;     this.name = name;     this.price = price;     this.descripton = descripton;    }        @GenericGenerator(name = "generator", strategy = "increment")    @Id    @GeneratedValue(generator = "generator")    @Column(name = "id", unique = true, nullable = false)    public Integer getId() {     return this.id;    }       public void setId(Integer id) {     this.id = id;   }       //延迟加载:多对一方式    //关联信息:外键name = "category_id"    @ManyToOne(fetch = FetchType.LAZY)    @JoinColumn(name = "category_id")    public Category getCategory() {     return this.category;    }       public void setCategory(Category category) {     this.category = category;    }       @Column(name = "name", length = 500)    public String getName() {     return this.name;    }       public void setName(String name) {     this.name = name;    }       @Column(name = "price", length = 10)    public String getPrice() {     return this.price;    }       public void setPrice(String price) {     this.price = price;    }       @Column(name = "descripton", length = 500)    public String getDescripton() {     return this.descripton;    }       public void setDescripton(String descripton) {     this.descripton = descripton;    }      }</span>  
测试代码:package com.itcast.cn.demol;     import java.util.Set;   import org.hibernate.Session;   import org.hibernate.SessionFactory;   import org.hibernate.cfg.AnnotationConfiguration;   import org.hibernate.cfg.Configuration;     public class HibernateTest {      public static void main(String[] args) {     HibernateTest test=new HibernateTest();     test.add();     test.find();   }    public void add(){    Configuration config=new AnnotationConfiguration();    config.configure();    SessionFactory sessionFactory=config.buildSessionFactory();    Session session=sessionFactory.getCurrentSession();    session.beginTransaction();    Category c=(Category)session.get(Category.class, 5);        Product p=new Product();    p.setName("IT技术");    p.setPrice("123");    p.setDescripton("IT技术,好啊,真是红啊");        p.setCategory(c);    c.getProducts().add(p);        session.save(p);    session.getTransaction().commit();    }        public void find(){     Configuration config=new AnnotationConfiguration();     config.configure();     SessionFactory sessionFactory=config.buildSessionFactory();     Session session=sessionFactory.getCurrentSession();     session.beginTransaction();     Category c=(Category)session.get(Category.class, 5);     System.out.println("id: "+c.getId()+"  name:"+c.getName());     Set<Product> p=c.getProducts();     for(Product product:p){     System.out.println("id:"+product.getId()                   +"  name:"+product.getName()                   +"  description:"+product.getDescripton());     }      session.getTransaction().commit();    }  }</span>  
运行效果: log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).   log4j:WARN Please initialize the log4j system properly.   Hibernate:         select            category0_.id as id1_0_,            category0_.description as descript2_1_0_,            category0_.name as name1_0_         from            users.category category0_        where           category0_.id=?   Hibernate:        select           products0_.category_id as category5_1_,           products0_.id as id1_,           products0_.id as id0_0_,           products0_.category_id as category5_0_0_,           products0_.descripton as descripton0_0_,           products0_.name as name0_0_,           products0_.price as price0_0_        from           users.product products0_        where           products0_.category_id=?   Hibernate:        select           max(id)        from           product   Hibernate:        insert        into           users.product           (category_id, descripton, name, price, id)        values           (?, ?, ?, ?, ?)   Hibernate:        select           category0_.id as id5_0_,           category0_.description as descript2_5_0_,           category0_.name as name5_0_        from           users.category category0_        where           category0_.id=?   id: 5  name:xml33   Hibernate:        select           products0_.category_id as category5_1_,           products0_.id as id1_,           products0_.id as id4_0_,           products0_.category_id as category5_4_0_,           products0_.descripton as descripton4_0_,           products0_.name as name4_0_,           products0_.price as price4_0_        from           users.product products0_        where           products0_.category_id=?   id:9  name:IT技术  description:IT技术,好啊,真是红啊</span> 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: