因为用到了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实体类自动创建。
分享到:
相关推荐
**hibernate-annotation-helloworld** 是一个基于Hibernate框架,使用注解方式实现的Hello World示例项目。在Java世界中,Hibernate是一个流行的持久层框架,它极大地简化了数据库操作,尤其是在对象关系映射(ORM)...
《深入理解Hibernate注解》 Hibernate作为Java领域中的一款强大持久化框架,极大地简化了数据库操作。而Hibernate注解则是其在ORM(对象关系映射)领域的进一步进化,它允许开发者将元数据直接嵌入到Java类和属性的...
在Java开发中,Hibernate与Annotation的结合使用极大地简化了数据持久化的复杂性,使得开发人员无需编写大量的SQL代码。下面将详细介绍Hibernate-Annotation所涉及到的知识点。 1. **Hibernate框架**: Hibernate是...
《Hibernate-Annotation-3.4.0帮助文档》是一份详尽的指南,旨在帮助开发者理解和使用Hibernate ORM框架中的注解功能。Hibernate是Java领域中广泛使用的对象关系映射(ORM)工具,它极大地简化了数据库操作。在3.4.0...
在Hibernate 3.x版本中,引入了Annotation注解,这是一种元数据的方式,可以替代XML配置文件来描述对象与数据库表之间的映射关系。 **Hibernate Annotation注解** 在Hibernate 3.x之前,对象到数据库的映射通常...
本篇文章将围绕"hibernate-annotation3.4.0 + hibernate-distribution3.3.2 + slf4j-1.5.8.rar"这个压缩包中的内容,深入探讨这两个框架的使用及其版本间的差异,以及Slf4j日志框架的集成。 首先,Hibernate是Java...
使用hibernate-validator 进行校验的jar包,里面包括了基础hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar 之外,还包括了el-api-2.2.jar javax.el-2.2.4等项目必不可...
【标题】"Hibernate Validator Annotation Processor 5.1.0.CR1" Hibernate Validator 是一个流行的开源验证框架,它基于JSR 303/JSR 349(Bean Validation)标准,为Java应用程序提供了强大的数据验证功能。...
【标题】:“Hibernate-Annotation初步” 【描述】中提到的“Hibernate-Annotation”是指Hibernate框架中的一种元数据声明方式,它允许开发者通过在Java类和字段上直接使用注解(Annotation)来替代传统的XML配置...
Hibernate Annotation中文教程 Hibernate 是 Java 数据库持久性的事实标准之一,它非常强大、灵活,而且具备了优异的性能。传统上,Hibernate 的配置依赖于外部 XML 文件,而最近发布的几个 Hibernate 版本中,...
通过编写简单的HelloWorld程序,引入Hibernate和Annotation,创建第一个数据库操作实例,了解基本的Session和Transaction使用。 ### 第 7 课 建立 Annotation 版本的 HelloWorld 在此阶段,将HelloWorld示例转换为...
这个压缩包“hibernate-validator-annotation-processor-4.3.1.final-sources.jar.zip”包含了Hibernate Validator注解处理器的源代码,版本号为4.3.1.Final,是理解其内部工作原理和自定义验证规则的重要资源。...
这里面包涵了需要用Hibernate Annotation时,所需要的所有jar包! 现在我们公司在做web项目的时候,已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用...
赠送jar包:geronimo-annotation_1.0_spec-1.1.1.jar; 赠送原API文档:geronimo-annotation_1.0_spec-1.1.1-javadoc.jar; 赠送源代码:geronimo-annotation_1.0_spec-1.1.1-sources.jar; 赠送Maven依赖信息文件:...
github链接链接:https://github.com/springzfx/point-cloud-annotation-tool 在windows平台编译完成后的exe和dll文件,可以直接打开使用,并对原项目进行了优化,增加了列表和标注文件的显示功能,标注起来更快,...
2. 可以从 Hibernate 站点下载 Hibernate 3.2 和 Hibernate Annotation 库。 3. 除了标准的 Hibernate JAR 和依赖项之外,您还需要 HibernateAnnotations .jar 文件(hibernate-annotations.jar)、Java 持久性 API...
《深入理解Hibernate注解3.4.0.GA》 Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。在3.4.0.GA版本中,Hibernate引入了注解支持,使得开发人员能够更方便地在类和属性上直接...
mybatis-plus-annotation.jar MP 注解 jar 包 mybatis-plus 的注解 jar 包,包含了 mybatis-plus 注解功能 各个版本
现在已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*....