(1)新建一个Java项目,例如我的如下:
(2)其中只关心上图中标记的两个包com.lc.bean 和 com.lc.junitTest
现创建lib目录 加入以下jar(免费下载地址:http://yunpan.cn/cfmcLktnMvGwB 提取码 8efe)
另外还要加入你们自己的数据库驱动包哦!
(3)其中Person类为实体类,代码如下:
package com.lc.bean;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
//是在javax.persistance包下的
@Entity
@Table(name = "person")
public class Person {
private Integer id;
private String name;
private Date birthday;
private Gender gender = Gender.MAN;
private String info;
public Byte[] file;
private String imagepath;
/*
* 需要提供一个默认的无参构造函数
*/
public Person() {
super();
}
public Person(String name) {
this.name = name;
}
/*
* 每一个实体 都需要一个实体标示符;标注在字段上 或者在get方法中(通常在get方法中)
*/
// 主键生成策略 --或者可以写成@GeneratedValue 因为默认的为auto
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
// 这里的name是数据库中的字段
@Column(length = 10, nullable = false, name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 格式化日期 不保留最后的时间 只保留 日期
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
// 枚举类型的注解方式 保存字符串到数据库 枚举类型 不准为空
@Enumerated(EnumType.STRING)
@Column(length = 5, nullable = false)
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
// @Lob声明属性对应的数据库是一个大文本数据类型
@Lob
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
// 存放二进制数据、进行延时加载
@Lob
@Basic(fetch = FetchType.LAZY)
public Byte[] getFile() {
return file;
}
public void setFile(Byte[] file) {
this.file = file;
}
// 不需要这个属性和数据库中字段映射 不会被影射
@Transient
public String getImagepath() {
return imagepath;
}
public void setImagepath(String imagepath) {
this.imagepath = imagepath;
}
}
package com.lc.bean;
public enum Gender {
MAN,WOWEN
}
package com.lc.junitTest;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.Test;
import com.lc.bean.Person;
public class PersonTest {
@Test
public void save() {
/*
* 1.获取sessionFactory对象,这里获取的是 EntityManagerFactory,差不多一个意思
*/
// sessionFcatory---session---begin事务
EntityManagerFactory factory = Persistence
.createEntityManagerFactory("jpatest");
EntityManager em = factory.createEntityManager(); // 创建一个实体管理器
em.getTransaction().begin(); // 开始事务
em.persist(new Person("徐刘根")); // 保存事务
em.getTransaction().commit();
em.close();
}
}
name:表示数据库的名称
transaction-type:表示本地事务
<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="jpatest" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="123456789"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpatest?useUnicode=true&characterEncoding=UTF-8"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
在数据库中得到结果
原文地址:http://blog.csdn.net/xlgen157387/article/details/41847929