首页 > 其他分享 >jpa入门(使用hibernate)

jpa入门(使用hibernate)

时间:2023-04-26 20:33:54浏览次数:37  
标签:em hibernate 入门 jpa user import public USER name


新建工程,加入jar包,如图:

jpa入门(使用hibernate)_hibernate


User:

package com.jpa;

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

@Entity(name="TB_USER")
public class User {
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	@SequenceGenerator(name="SEQ_USER")
	private int id;
	
	@Column(name="USER_AGE")
	private int age;
	
	@Column(name="USER_NAME")
	private String name;
	
	public int getId() {
		return id;
	}

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

	public int getAge() {
		return age;
	}

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

	public String getName() {
		return name;
	}

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

	@Override
	public String toString() {
		return "User [id=" + id + ", age=" + age + ", name=" + name + "]";
	}

}



persistence.xml:


<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="orclJPA">
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
			<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />
			<property name="hibernate.connection.username" value="HIBERNATE" />
			<property name="hibernate.connection.password" value="HIBERNATE" />
			<property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />
			<property name="hibernate.max_fetch_depth" value="3" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
		</properties>
	</persistence-unit>
</persistence>



建表SQL:

CREATE TABLE TB_USER
(
    ID INTEGER PRIMARY KEY,
    USER_NAME VARCHAR2(20) NOT NULL,
    USER_AGE INTEGER NOT NULL
);



CREATE SEQUENCE SEQ_USER
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;



CREATE OR REPLACE TRIGGER TR_USER BEFORE INSERT ON TB_USER FOR EACH ROW
BEGIN
    SELECT SEQ_USER.NEXTVAL INTO :NEW.ID FROM DUAL;
END;



测试代码:

package com.jpa;

import java.util.Random;

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

import junit.framework.TestCase;

public class TestJPA extends TestCase {
	private static final Random random = new Random();
	
	private static final String persistenceUnitName = "orclJPA";
	
	private static EntityManagerFactory emf;
	
	private static EntityManager em;

	@Override
	protected void setUp() throws Exception {
		emf = Persistence.createEntityManagerFactory(persistenceUnitName);
		emf.createEntityManager();
		em = emf.createEntityManager();
	}

	public void testSave() {
		em.getTransaction().begin();
		User user = new User();
		user.setAge(random.nextInt(100));
		user.setName("user" + random.nextInt(100));
		em.persist(user);
		em.getTransaction().commit();
	}
	
	public void testFind() {
		em.getTransaction().begin();
		User user = em.find(User.class, 1);
		System.out.println(user);
	}
	
	public void testUpdate() {
		em.getTransaction().begin();
		User user = em.find(User.class, 1);
		user.setName("user" + random.nextInt(100));
		em.getTransaction().commit();
	}
	
	public void testRemove() {
		em.getTransaction().begin();
		User user = em.find(User.class, 3);
		em.remove(user);
		em.getTransaction().commit();
	}
	
	@Override
	protected void tearDown() throws Exception {
		em.close();
		emf.close();
	}
}




标签:em,hibernate,入门,jpa,user,import,public,USER,name
From: https://blog.51cto.com/u_1002776/6228853

相关文章

  • Go入门基础03
    函数高级给类型重命名: 函数的参数和返回值都是类型的一部分,函数可以赋值给一个变量1. 例:typeMyFuncfunc(int,int)intMyFunc就是我们将func(int,int)int重新定义了一下类型,以后在定义函数类型的是时候直接使用MyFunc就是代替了func(int,int)int2.例:typeMyint......
  • SpringSecurity从入门到精通:认证成功处理器&认证失败处理器
    认证成功处理器  认证失败处理器  ......
  • 第二十四章:事件入门
     学习要点:1.事件介绍2.内联模型3.脚本模型4.事件处理函数JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击。当用户执行某些操作的时候,再去执行一系列代码。一.事件介绍事件一般是用于浏览器和用户操作进行交互。最早是IE和NetscapeNavigator中出现,作为分......
  • Kotlin基础入门 - 创建、兼容一个属于自己的Kotlin项目
    这应该是我年前就想记录的一个基础入门,但是因为一直比较忙,当时只是做了一个备忘草稿,正文就拖到了现在,趁着有时间,赶紧来帮助一下新入行的朋友…关于为何我把这篇Blog叫做创建、兼容一个属于自己的Kotlin项目?主要是因为在实际开发中会遇到以下俩种项目场景><从0-1的Kot......
  • git和github的入门操作
    之前因为工作中用的都是SVN版本控制工具,没接触过git和github,现在开始深入自学Django框架技术后,看到官网推荐使用git,然后这两天网上查阅了很多文章教程,学到入门操作需要学习的点,太多的知识点要后面慢慢深入学习了。看到一个网上教程说的一段话:“如果你是一枚Coder,但是你不......
  • Kotlin基础入门 - for、forEach 循环
    Kotlin基础入门-for、forEach循环liuyong.blog.csdn.net成就一亿技术人!不论身处何方for循环这种操作都随处可见,鉴于大多数Android开发都是从Java转到Kt的,所以我的思路是从Java的使用习惯来讲一些Kt的for、forEach循环方式基础for循环惯性for循环进阶for循......
  • 第1章 jQuery入门
    学习要点:1.什么是jQuery2.学习jQuery的条件3.jQuery的版本4.jQuery的功能和优势5.其他JavaScript库6.是否兼容低版本IE7.下载及运行jQuery一.什么是jQueryjQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一整套定义好的方法。它的作者是JohnResig,于2006年创建的一个开......
  • Hibernate 一对一
    配置单向一对一关联如表 第一步:实现Person表和IdCard表的实体类第二步:1、进行Person实体类的配置,如下:<classname="entity.Person"><idname="id"><generatorclass="sequence">&l......
  • SpringSecurity从入门到精通:其他权限校验方法&自定义权限校验方法
    其他权限校验方法我们前面都是使用@PreAuthorize注解,然后在在其中使用的是hasAuthority方法进行校验。SpringSecurity还为我们提供了其它方法例如:hasAnyAuthority,hasRole,hasAnyRole等。​这里我们先不急着去介绍这些方法,我们先去理解hasAuthority的原理,然后再去学......
  • SpringSecurity从入门到精通:从数据库查询权限信息&自定义失败处理
    从数据库查询权限信息      记得打开redis      自定义失败处理我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity......