Hibernate Annotation (Hibernate 注解)
来源:互联网 发布:百利甜酒 知乎 编辑:程序博客网 时间:2024/05/01 23:14
http://www.cnblogs.com/hongten/archive/2011/07/20/2111773.html
进入: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
数据库:mysql
category表:id,name,description <Pk>id
product表:id,name ,price, description ,category_id <pk>id <fk>category_id
新建java project项目:
Add Hibernate Capabilities
hibernate.cfg.xml
1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 6 <!-- Generated by MyEclipse Hibernate Tools. --> 7 <hibernate-configuration> 8 9 <session-factory>10 <property name="dialect">11 org.hibernate.dialect.MySQLDialect12 </property>13 <property name="connection.url">14 jdbc:mysql://localhost:3307/users15 </property>16 <property name="connection.username">root</property>17 <property name="connection.password">root</property>18 <property name="connection.driver_class">19 com.mysql.jdbc.Driver20 </property>21 <property name="myeclipse.connection.profile">22 mysqlusers23 </property>24 <property name="format_sql">true</property>25 <property name="show_sql">true</property>26 <property name="current_session_context_class">thread</property>27 <mapping class="com.b510.examples.Product" />28 <mapping class="com.b510.examples.Category" />29 30 </session-factory>31 32 </hibernate-configuration>
利用Hibernate的逆向工程生成:
Category.java and Product.java
Category.java
1 package com.b510.examples; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 // 标准注解 7 8 import javax.persistence.CascadeType; 9 import javax.persistence.Column;10 import javax.persistence.Entity;11 import javax.persistence.FetchType;12 import javax.persistence.GeneratedValue;13 import javax.persistence.Id;14 import javax.persistence.OneToMany;15 import javax.persistence.Table;16 17 //增加的注解18 19 import org.hibernate.annotations.GenericGenerator;20 21 //当前的类是一个持久化类,是Category这个类。他映射了一个表category。所对应的 数据库是users22 //这句:@Table(name = "category", catalog = "users") 可以省略23 @Entity24 @Table(name = "category", catalog = "users")25 26 public class Category implements java.io.Serializable {27 28 private static final long serialVersionUID = 3240281547213597385L;29 private Integer id;30 private String name;31 private String description;32 private Set<Product> products = new HashSet<Product>(0);33 34 35 public Category() {36 }37 38 public Category(String name, String description, Set<Product> products) {39 this.name = name;40 this.description = description;41 this.products = products;42 }43 44 // 主键 :@Id 主键生成方式:strategy = "increment"45 //映射表中id这个字段,不能为空,并且是唯一的46 @GenericGenerator(name = "generator", strategy = "increment")47 @Id48 @GeneratedValue(generator = "generator")49 @Column(name = "id", unique = true, nullable = false)50 public Integer getId() {51 return this.id;52 }53 54 public void setId(Integer id) {55 this.id = id;56 }57 58 //映射表中name这个字段 ,长度是50059 @Column(name = "name", length = 500)60 public String getName() {61 return this.name;62 }63 64 public void setName(String name) {65 this.name = name;66 }67 68 //映射表中description这个字段 ,长度是50069 @Column(name = "description", length = 500)70 public String getDescription() {71 return this.description;72 }73 74 public void setDescription(String description) {75 this.description = description;76 }77 78 //级联操作:cascade = CascadeType.ALL79 //延迟加载:fetch = FetchType.LAZY80 //映射:mappedBy = "category"81 //一对多方式82 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "category")83 public Set<Product> getProducts() {84 return this.products;85 }86 87 public void setProducts(Set<Product> products) {88 this.products = products;89 }90 91 }
Product.java
1 package com.b510.examples; 2 3 import javax.persistence.Column; 4 import javax.persistence.Entity; 5 import javax.persistence.FetchType; 6 import javax.persistence.GeneratedValue; 7 import javax.persistence.Id; 8 import javax.persistence.JoinColumn; 9 import javax.persistence.ManyToOne;10 import javax.persistence.Table;11 import org.hibernate.annotations.GenericGenerator;12 13 14 @Entity15 @Table(name = "product", catalog = "users")16 public class Product implements java.io.Serializable {17 18 private static final long serialVersionUID = -1546206493725028472L;19 private Integer id;20 private Category category;21 private String name;22 private String price;23 private String descripton;24 25 26 public Product() {27 }28 29 public Product(Category category, String name, String price,30 String descripton) {31 this.category = category;32 this.name = name;33 this.price = price;34 this.descripton = descripton;35 }36 37 @GenericGenerator(name = "generator", strategy = "increment")38 @Id39 @GeneratedValue(generator = "generator")40 @Column(name = "id", unique = true, nullable = false)41 public Integer getId() {42 return this.id;43 }44 45 public void setId(Integer id) {46 this.id = id;47 }48 49 //延迟加载:多对一方式50 //关联信息:外键name = "category_id"51 @ManyToOne(fetch = FetchType.LAZY)52 @JoinColumn(name = "category_id")53 public Category getCategory() {54 return this.category;55 }56 57 public void setCategory(Category category) {58 this.category = category;59 }60 61 @Column(name = "name", length = 500)62 public String getName() {63 return this.name;64 }65 66 public void setName(String name) {67 this.name = name;68 }69 70 @Column(name = "price", length = 10)71 public String getPrice() {72 return this.price;73 }74 75 public void setPrice(String price) {76 this.price = price;77 }78 79 @Column(name = "descripton", length = 500)80 public String getDescripton() {81 return this.descripton;82 }83 84 public void setDescripton(String descripton) {85 this.descripton = descripton;86 }87 88 }
测试代码:
HibernateTest.java
1 /** 2 * 3 */ 4 package com.b510.examples; 5 6 import java.util.Set; 7 8 import org.hibernate.Session; 9 import org.hibernate.SessionFactory;10 import org.hibernate.cfg.AnnotationConfiguration;11 import org.hibernate.cfg.Configuration;12 13 /**14 *15 * @author XHW16 *17 * @date 2011-7-2018 *19 */20 public class HibernateTest {21 22 public static void main(String[] args) {23 HibernateTest test=new HibernateTest();24 test.add();25 test.find();26 }27 public void add(){28 Configuration config=new AnnotationConfiguration();29 config.configure();30 SessionFactory sessionFactory=config.buildSessionFactory();31 Session session=sessionFactory.getCurrentSession();32 session.beginTransaction();33 Category c=(Category)session.get(Category.class, 5);34 35 Product p=new Product();36 p.setName("计算机科学与技术");37 p.setPrice("123");38 p.setDescripton("计算机科学与技术,好啊,真是红啊");39 40 p.setCategory(c);41 c.getProducts().add(p);42 43 session.save(p);44 session.getTransaction().commit();45 }46 47 48 public void find(){49 Configuration config=new AnnotationConfiguration();50 config.configure();51 SessionFactory sessionFactory=config.buildSessionFactory();52 Session session=sessionFactory.getCurrentSession();53 session.beginTransaction();54 Category c=(Category)session.get(Category.class, 5);55 System.out.println("id: "+c.getId()+" name:"+c.getName());56 Set<Product> p=c.getProducts();57 for(Product product:p){58 System.out.println("id:"+product.getId()+" name:"+product.getName()+" description:"+product.getDescripton());59 }60 session.getTransaction().commit();61 }62 }
运行效果:
1 log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). 2 log4j:WARN Please initialize the log4j system properly. 3 Hibernate: 4 select 5 category0_.id as id1_0_, 6 category0_.description as descript2_1_0_, 7 category0_.name as name1_0_ 8 from 9 users.category category0_ 10 where11 category0_.id=?12 Hibernate: 13 select14 products0_.category_id as category5_1_,15 products0_.id as id1_,16 products0_.id as id0_0_,17 products0_.category_id as category5_0_0_,18 products0_.descripton as descripton0_0_,19 products0_.name as name0_0_,20 products0_.price as price0_0_ 21 from22 users.product products0_ 23 where24 products0_.category_id=?25 Hibernate: 26 select27 max(id) 28 from29 product30 Hibernate: 31 insert 32 into33 users.product34 (category_id, descripton, name, price, id) 35 values36 (?, ?, ?, ?, ?)37 Hibernate: 38 select39 category0_.id as id5_0_,40 category0_.description as descript2_5_0_,41 category0_.name as name5_0_ 42 from43 users.category category0_ 44 where45 category0_.id=?46 id: 5 name:xml3347 Hibernate: 48 select49 products0_.category_id as category5_1_,50 products0_.id as id1_,51 products0_.id as id4_0_,52 products0_.category_id as category5_4_0_,53 products0_.descripton as descripton4_0_,54 products0_.name as name4_0_,55 products0_.price as price4_0_ 56 from57 users.product products0_ 58 where59 products0_.category_id=?60 id:9 name:计算机科学与技术 description:计算机科学与技术,好啊,真是红啊
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- Hibernate Annotation (Hibernate 注解)
- 第三方框架终极版
- C 语言中一些非常用知识点 备忘录
- 写技术博客的心得.
- Eclipse搭建Cocos2d-x运行环境问题
- jQuery中$(document).ready()方法与传统JavaScript中的window.onload的差异
- Hibernate Annotation (Hibernate 注解)
- java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widg
- uva 208 Firetruck
- busybox启用telnetd服务
- linux服务器上的11种tcp状态
- ios消息推送机制原理与实现
- 写给大家的编程书(1)
- 机器学习_基于adaboost和haar like特征的人脸识别
- Android智能手机远程视频监控的设计