使用表的id生成

package cn.itcast.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.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(name="t_person")
public class Person {

	private Integer id;
	private String name;
	private Date birthday;
	private Gender gender = Gender.MALE;
	private String info;  //大文本
	public Byte[] file;
	private String imagepath;
	
	@TableGenerator(
			name="Address_Gen",
			table="id_gen",
			pkColumnName="gen_name",
			valueColumnName="gen_val",
			pkColumnValue="Addr_Gen",
			initialValue=1,
			allocationSize=1
	)
	@Id
	@GeneratedValue(strategy=GenerationType.TABLE,generator="Address_Gen")
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}	
	@Column(length=10,nullable=false,name="personName")
	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=6,nullable=false)
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	@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.bjsxt.test;

import java.util.Date;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import org.junit.BeforeClass;
import org.junit.Test;

import cn.itcast.bean.Person;


public class PersonTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
	
	@Test
	public void save() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
		EntityManager em = factory.createEntityManager();
		em.getTransaction().begin();
		Person person = new Person();
		person.setName("test");
		person.setBirthday(new Date());
		em.persist(person);
		em.getTransaction().commit();
		em.close();
		factory.close();
	}
	
	@Test
	public void getPerson() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
		EntityManager em = factory.createEntityManager();
		Person person = em.find(Person.class,1);
		System.out.println(person.getName());
		em.close();
		factory.close();
	}
	
	@Test
	public void getPerson2() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
		EntityManager em = factory.createEntityManager();
		Person person = em.getReference(Person.class,1);
		System.out.println(person.getName());
		em.close();
		factory.close();
	}
	
	@Test
	public void updatePerson() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
		EntityManager em = factory.createEntityManager();
		em.getTransaction().begin();
		Person person = em.find(Person.class,1);
		person.setName("老刁");
		em.getTransaction().commit();
		em.close();
		factory.close();
	}
	//new
	//managed 托管
	//游离(脱管)
	//删除
	@Test
	public void updatePerson2() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
		EntityManager em = factory.createEntityManager();
		em.getTransaction().begin();
		Person person = em.find(Person.class,1);
		em.clear();
		person.setName("老张");
		em.merge(person);
		em.getTransaction().commit();
		em.close();
		factory.close();
	}
	
	@Test
	public void deletePerson() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
		EntityManager em = factory.createEntityManager();
		em.getTransaction().begin();
		Person person = em.find(Person.class,1);
		em.remove(person);
		em.getTransaction().commit();
		em.close();
		factory.close();
	}
	@Test
	public void query() {
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
		EntityManager em = factory.createEntityManager();
		Query query = em.createQuery("select o from Person o where o.id = ?1");
		query.setParameter(1, 2);
		Person person = (Person)query.getSingleResult();
		System.out.println(person.getName());
		em.close();
		factory.close();
	}
}



<?xml version="1.0" encoding="UTF-8"?>
<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="itcast" transaction-type="RESOURCE_LOCAL">
		
		<!-- 相关于数据库的一些属性信息 -->
		<properties>
		     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
		     <property name="hibernate.hbm2ddl.auto" value="update"/>
		     <property name="hibernate.show_sql" value="true"/>
		     
		      <property name="hibernate.format_sql" value="true" />
			<!-- sqlServer的驱动器 -->
			<property name="hibernate.connection.driver_class"
				value="com.mysql.jdbc.Driver" />
			<!-- 设置sqlServer路径以及数据库名 -->
			<property name="hibernate.connection.url"
				value="jdbc:mysql://localhost/jpa" />
			<!-- 数据库的用户名 -->
			<property name="hibernate.connection.username" value="root" />
			<!-- 数据库的密码 -->
			<property name="hibernate.connection.password" value="root" />
		</properties>
	</persistence-unit>
</persistence>



猜你喜欢

转载自diaochenlong2.iteye.com/blog/1845722