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

hibernate引文

2012-06-27 
hibernate注解进入:http://www.hibernate.org说明文档:英文:http://docs.jboss.org/hibernate/annotations

hibernate注解

进入:http://www.hibernate.org说明文档:英文:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/中文:http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/下载:hibernate annotation 3.4.0 GA得到:hibernate-annotations.jar   hibernate-commons-annotation.jar   ejb3-persistence.jar数据库:mysqlcategory表:id,name,description       <Pk>idproduct表:id,name ,price, description ,category_id                  <pk>id  <fk>category_id新建java project项目:Add Hibernate Capabilitieshibernate.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 />  <mapping /> </session-factory></hibernate-configuration>利用Hibernate的逆向工程生成:Category.java      and           Product.java   Category.javapackage com.b510.examples;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; }}Product.java代码:package com.b510.examples;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; }}测试代码:HibernateTest.java代码:/** *  */package com.b510.examples;import java.util.Set;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.cfg.Configuration;/** * * @author XHW * * @date 2011-7-20 * */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("计算机科学与技术"); p.setPrice("123"); p.setDescripton("计算机科学与技术,好啊,真是红啊");  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(); }}运行效果: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        productHibernate:     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:xml33Hibernate:     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:计算机科学与技术  description:计算机科学与技术,好啊,真是红啊

?

热点排行