Hibernate JPA 实例

JPA搞了有一段时间了,现在写一点自己的感受和一个实例和大家分享。JPA(java persistence API)java持久层规范,也就是相当于一种对ORM的规定(规则)。Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;其二,Sun希望整合对ORM技术,实现天下归一。(对于jpa)不大了解的可以查考附件中的教程。本例用的hibernate的版本是4.1.1 J2SE5

在mysql数据库中建立jpa数据库(creaeta database jpa;)表可以不建要是不能自动建立的话手动写一下

文件结构:

一个简单的POJO User.java (注释以写若不清楚详情请看附件教程)

package org.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity(name="t_user")//将领域对象标注为一个实体,默认类名即表明但是可以同意name属性指定
public class User {
	//primary id
	@Id//指定该属性为表中的主键
	/*
	 *主键的产生策略,通过strategy属性指定。
	 *默认情况下,JPA自动选择一个最适合底层数据库的主键生成策略,如SqlServer对应identity,MySql对应auto increment。
	 */
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id")
	private int id;
	//user name
	/**
	 * @Column(name = "name"):
	 * 属性对应的表字段。我们并不需要指定表字段的类型,因为JPA会根据反射从实体属性中获取类型;如果是字符串类型,我们可以指定字段长度,以便可以自动生成DDL语句
	 * @Temporal(TemporalType.DATE):如果属性是时间类型,因为数据表对时间类型有更严格的划分,所以必须指定具体时间类型
	 */
	@Column(name="name")
	private String name;
	//password
	@Column(name="password")
	private String password;
//省略的get和set方法

 persistence。xml (必须在指定的文件夹下否则找不到)

 

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	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_2_0.xsd">
	<!-- 为持久化单元取名为 myJPA -->
	<persistence-unit name="myJPA" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>org.entity.User</class>
		<properties><!--配置Hibernate方言 -->
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
			<!--配置数据库驱动 -->
			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
			<!--配置数据库用户名 -->
			<property name="hibernate.connection.username" value="root" />
			<!--配置数据库密码 -->
			<property name="hibernate.connection.password" value="123456" />
			<!--配置数据库url -->
			<property name="hibernate.connection.url"
				value="jdbc:mysql://127.0.0.1:3306/jpa?useUnicode=true" />
			<!--设置外连接抓取树的最大深度 -->
			<property name="hibernate.max_fetch_depth" value="3" />
			<!--自动输出schema创建DDL语句 -->
			<!-- <property name="hibernate.hbm2ddl.auto" value="update" /> -->
			<property name="hibernate.hbm2ddl.auto" value="validate"/> 
		</properties>
	</persistence-unit>
</persistence>

 Test:

package org.test;


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

import org.entity.User;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class TestJPA {
	EntityManagerFactory emf = null;

	@Before
	public void before() {
		emf = Persistence.createEntityManagerFactory("myJPA");
	}

	// add user
	@Test
	public void addTest() {
		User user = new User();
		user.setName("JJJ");
		user.setPassword("222");
		EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();
		System.out.println("entitymanager");
		em.persist(user);
		em.getTransaction().commit();
		em.close();
	}

	@After
	public void after() {
		if (null != emf) {
			emf.close();
		}
	}
}

 

结果:



 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值