hibernate-annotation简单傻瓜实例

因为用到了hibernate-annotation,结果发现简直解放我好多事情,几乎彻底不用操心数据库了,贴出实例,注:代码是别人写的,我只是实现下而已哈

 

用到的包包:

 

 

	<classpathentry kind="lib" path="D:/maven/Repository/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-annotations-3.3.0.ga.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/ejb3-persistence.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/asm/asm/1.5.3/asm-1.5.3.jar"/>
	<classpathentry kind="lib" path="D:/maven/Repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>

  

 

 

 

首先实体类:

 

package test.hibernate.annotation;

import java.util.LinkedList;
import java.util.List;

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

import org.hibernate.annotations.GenericGenerator;

@SuppressWarnings("serial")
@Entity
@Table
public class Person implements java.io.Serializable {
	private Integer id;
	private String name;
	private String sex;
	private Integer age;
	private List list = new LinkedList();

	public Person() {
	}

	public Person(Integer id) {
		this.id = id;
	}

	// Property accessors
	@Id
	@GeneratedValue(generator = "paymentableGenerator")
	@GenericGenerator(name = "paymentableGenerator", strategy = "increment")
	public Integer getId() {
		return this.id;
	}

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

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return this.sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public Integer getAge() {
		return this.age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Transient
	public List getList() {
		return list;
	}

	public void setList(List list) {
		this.list = list;
	}

}

 

 

注释就不跟大家解释了,具体请参见hibernate-annotation文档哈。我主要让大家先跑起来这个实例

 

 

接下来HibernateUtil类:

 

 

package hello;

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

import test.hibernate.annotation.Person;

public class HibernateUtil {

	private static final SessionFactory sessionFactory;
	public static final ThreadLocal<Session> session = new ThreadLocal<Session>();

	static {
		try {

			sessionFactory = new AnnotationConfiguration()
					//注意: 建立 SessionFactory于前面的不同
					.addPackage("test.hibernate.annotation").addAnnotatedClass(Person.class).configure()
					.buildSessionFactory();

		} catch (Throwable ex) {
			throw new ExceptionInInitializerError(ex);
		}
	}

	public static Session getSession() throws HibernateException {
		return sessionFactory.openSession();
	}

	public static Session currentSession() throws HibernateException {
		Session s = session.get();

		if (s == null) {
			s = sessionFactory.openSession();
			session.set(s);
		}

		return s;
	}

	public static void closeSession() throws HibernateException {
		Session s = session.get();
		if (s != null) {
			s.close();
		}
		session.set(null);
	}
}

 

 

测试类:

 

 

package test.hibernate;

import hello.HibernateUtil;

import org.hibernate.Session;
import org.hibernate.Transaction;

import test.hibernate.annotation.Person;

public class Test {

	public static void main(String[] args) {
		Session s = HibernateUtil.currentSession();

		Transaction tx = s.beginTransaction();

		//    Person p = (Person) s.load(Person.class, 1);
		//    System.out.println(p.getName());
		Person p = new Person();

		p.setAge(19);
		p.setName("icerain");
		p.setSex("male");
		s.save(p);
		s.flush();
		/*
		Person p2 = (Person) s.get(Person.class, new Integer(1));
		System.out.println(p2.getName());
		p2.setName("ice..");
		s.saveOrUpdate(p2);
		s.flush();
		Person p3 = (Person) s.get(Person.class, new Integer(2));
		System.out.println(p3.getName());
		s.delete(p3);
		*/

		tx.commit();
		try {
			System.out.println(p.getName());
		} catch (Exception e) {
			e.printStackTrace();
		}

		HibernateUtil.closeSession();
	}
}

 

 

 

hibernate.cfg.xml:放在classpath目录下,hibernate会自己寻找

 

 

 

<!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.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="hibernate.connection.password">3645466</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="show_sql">true</property>

<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

<property name="hibernate.transaction.auto_close_session">false</property>

<property name="hibernate.hbm2ddl.auto">update</property>


</session-factory>

</hibernate-configuration>

 

 

 

哦了,跑test.java吧,数据库表hibernate会根据person实体类自动创建。

你可能感兴趣的:(sql,maven,Hibernate,mysql,jdbc)