目录:
配置文件:
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.java
Product.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>