Hibernate注解版简单实例@entity,@id(一)

1 网上说要导入 如下这些包

antlr.jar
commons-collections.jar
ejb-persistence.jar
hibernate-annotations.jar
hibernate-core.jar
javassist.jarjta.jar
log4j.jarmysql.jar
slf4j-api.jar
slf4j-log4j12.jar

但是我用的是hibernate 4 ,好多jar包都没有,名字也变了,所以我把hibernate4的jar都导进来了

太多,我就不列 了

2 配置 hibernate.cfg.xml, 这个文件放在了com.hib下,为了读文件是相对目录不用配置,其实放在别的地方也可以 ,这里加入了注解对应的类,代替了原来的xml文件

  



	
		
			org.hibernate.dialect.MySQLDialect
		
		
			jdbc:mysql://localhost:3306/wanju
		
		root
		root
		
			com.mysql.jdbc.Driver
		
		mysql5
		true
		
		

	

  

3 开始写实体类 ,记住 @Id 要放在 getId() 方法上,放在setId()上会报错 ,当然 别忘了在数据库中 添加table   create table(id int primary key, name varchar(25));

 

package com.hib;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name = "hib_user")
public class User {

	private int id;
	private String name;
	
	@Id
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
}

4 HibernateUtil 负责获取session

package com.hib;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 * @author bubble
 * 
 */
public class HibernateUtil {

	// single
	private static final SessionFactory sessionFactory;

	static {
		try {
			// class AnnotationConfiguration:读取关于Annotation的配置
			sessionFactory = new AnnotationConfiguration().configure()
					.buildSessionFactory();
		} catch (Throwable e) {
			// TODO: handle exception
			throw new ExceptionInInitializerError(e);
		}
	}

	// static method to get session
	public static Session getSession() throws HibernateException {

		return sessionFactory.openSession();

	}

	// close session factory
	public static void closeSessionFactory() {

		sessionFactory.close();

	}

}

如果配置文件放在别的地方可以用绝对路径来传递参数:

			// class AnnotationConfiguration:读取关于Annotation的配置
			sessionFactory = new AnnotationConfiguration().configure("/hibernate.cfg.xml")
					.buildSessionFactory();
		

5 进行测试


package com.hib;

import org.hibernate.Session;

  
public class AnnoTest {  
  
    /** 
     * @author bubble 11 / 12 / 05 
     */  
    public static void main(String[] args) {  
           
    	User user = new User();
    	user.setId(2);
    	user.setName("jim");
        Session session=HibernateUtil.getSession();// get session  
        session.beginTransaction();  
        session.save(user);  
        session.getTransaction().commit();  
        session.close();  
        HibernateUtil.closeSessionFactory();  
  
    }  
  
}  

6 测试结果 





评论:

1


session=HibernateUtil
类的最大的作用就是获取sessionFactory,或者说一代码,别的都是废话啊

SessionFactory factory = new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();

2 如何使用session.getcurrentsession(),需要在配置中加入

thread

而且仍然需要commit(),有的文档说不用commit了,纯粹胡扯


你可能感兴趣的:(Hibernate)