maven项目 hibernate一对多注解例子

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>cn.orm</groupId>
	<artifactId>db</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>db</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>4.3.6.Final</version>
		</dependency>

		<dependency>
			<groupId>postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>9.1-901-1.jdbc4</version>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

	</dependencies>

</project>


hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.url">jdbc:postgresql://127.0.0.1/db_cloud</property>
		<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
		<property name="hibernate.connection.username">postgres</property>
		<property name="hibernate.connection.password">admin</property>
		<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		<property name="hibernate.current_session_context_class">thread</property>  
      	<mapping class="cn.orm.vo.User"/>
      	<mapping class="cn.orm.vo.Topic"/>
	</session-factory>
</hibernate-configuration>


package cn.orm.vo;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="t_user2")
public class User 
{
	@Id
	@GeneratedValue
	@Column(name = "uid")
	private Integer id;
	
	@Column
	private String username;
	
	@Column
	private String nickname;
	
	@Column
	private String stype;
	
	@OneToMany(cascade=CascadeType.ALL)  
    @JoinColumn(name="uid") //对应儿子类的哪个字段  
	private List<Topic> topics = new ArrayList<Topic>();

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getNickname() {
		return nickname;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}

	public String getStype() {
		return stype;
	}

	public void setStype(String stype) {
		this.stype = stype;
	}

	public List<Topic> getTopics() {
		return topics;
	}

	public void setTopics(List<Topic> topics) {
		this.topics = topics;
	}
	
	public String toString()
	{
		return "[id="+id+",username="+username+",nickname="+nickname+"]";
	}
}


package cn.orm.vo;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="t_topic2")
public class Topic
{
	@Id
	@GeneratedValue
	@Column(name = "tid")
	private Integer id;
	
	@ManyToOne(cascade = CascadeType.ALL, optional = false)
	@JoinColumn(name="uid")//外键为uid,与User中的id关联
	private User user;
	
	@Column
	private String title;
	
	@Column
	private String content;
	
	@Column(name = "t_status")
	private String status;
	
	@Column(name = "t_type")
	private String type;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
	
	public String toString()
	{
		return "[user.uid="+user.getId()+",title="+title+"]";
	}
}

package cn.orm.db;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import cn.orm.vo.Topic;
import cn.orm.vo.User;

/**
 * Hello world!
 *
 */
public class App 
{	
	static SessionFactory sf;
	
	static {
		sf =  new AnnotationConfiguration().configure().buildSessionFactory();
	}
	
	public static void init() throws Exception 
	{

		Session session = sf.openSession();
		
		Transaction ts=session.beginTransaction();
		
		//ts.begin();

//		User u1 = new User();
//		u1.setUsername("tomcat");
//		u1.setNickname("web服务器");
//		u1.setStype("0");
		
		User u1 = (User)session.load(User.class, 22);
		
		Topic t = new Topic();
		t.setContent("xx");
		t.setTitle("Apache Tomcat v7.0.1正式发布");
		t.setStatus("0");
		t.setType("0");
		t.setUser(u1);

		//session.save(u1);
		session.save(t);

		
		ts.commit();

		session.close();

		sf.close();

	}

	public static void query() throws Exception 
	{

		Session session = sf.openSession();
		
		User u1 = (User)session.load(User.class, 22);
		
		List<Topic> list = u1.getTopics();
		
		for(Topic topic : list)
		{
			System.out.println(topic + "\t" + topic.getUser());
		}
		
		sf.close();
		
	}
	
	public static void main(String[] args) throws Exception {
		query();
	}
}


你可能感兴趣的:(maven项目 hibernate一对多注解例子)