`

使用表的id生成

    博客分类:
  • JPA
阅读更多
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>



  • 大小: 35.2 KB
  • jpa.7z (5.1 MB)
  • 下载次数: 0
分享到:
评论

相关推荐

    javaID生成器javaID生成器

    ### Java ID生成器详解 #### 一、引言 在软件开发过程中,特别是在数据库操作时,经常需要为每个新创建的记录分配一个唯一的标识符(ID)。为了满足这一需求,Java 开发者们通常会设计一种高效且可靠的 ID 生成...

    全局唯一ID生成

    在分布式ID生成的项目中,"src"目录下可能包含了实现各种ID生成算法的Java代码,而"WebContent"则可能包含展示或测试这些ID生成服务的前端页面。 总的来说,全局唯一ID生成是分布式系统设计中的核心问题之一,涉及...

    雪花id生成器源码-雪花算法ID生成器

    雪花算法ID生成器 一个适合大量数据的主键生成器 可以尽可能的让数据靠拢; 可以赋予主键更多的区分信息 支持数据库的扩容/分片

    PHP生成唯一RequestID类

    2. `generateID()`: 这个方法可能负责实际的Request ID生成逻辑,即组合`session_create_id()`和`uniqid()`的结果。 3. `getID()`: 返回已经生成的Request ID,供其他部分的代码使用。 在`demo.php`中,我们可以...

    JAVA 的ID生成策略

    JAVA ID生成策略是一种在Hibernate框架中使用的策略,用于生成实体类的主键值。这种策略在Annotation情况下,主要有三种方式生成主键值。 第一种方式是使用数据库的自动增长字段生成。这种方式使用@GeneratedValue...

    java自动生成id策略

    为了解决这个问题,可以考虑使用更复杂的分布式ID生成方案,如Twitter的Snowflake算法或Google的UUID。这些算法在保证全局唯一性的同时,还能提供更高的并发处理能力。 综上所述,"java自动生成id策略"涉及到对...

    Hibernate教程02_ID生成策略

    在Java的持久化框架Hibernate中,ID生成策略是至关重要的一个环节。它是用来唯一标识数据库中每一...通过学习这些示例,你可以更好地理解如何在Hibernate中配置和使用不同的ID生成策略,并在实际项目中做出明智的选择。

    根据硬件ID生成注册码

    标题中的“根据硬件ID生成注册码”是指在软件授权过程中常用的一种方法,它涉及到软件版权保护和反盗版技术。硬件ID(Hardware Identifier)通常指的是计算机的唯一标识,如主板的序列号、网卡MAC地址或者硬盘ID等,...

    C# ID生成器

    ID生成器

    go-id-builder ID生成器

    【go-id-builder ID生成器】是一个专为Go语言设计的高效ID生成系统,它能够确保生成的ID具有唯一性并且顺序连续,这对于需要大量分配唯一标识符的分布式系统尤其重要。在分库分表的场景下,每个数据实体都需要一个...

    自定义id快速生成器

    本文将深入探讨自定义ID生成器的工作原理、实现方法以及它在百度贴吧中的应用。 首先,让我们了解什么是自定义ID。自定义ID是指用户可以按照自己的喜好选择或创建的唯一标识符,区别于系统自动分配的随机数字或字母...

    分布式ID生成策略_snowflake算法

    分布式ID生成策略是现代互联网应用中的重要组成部分,尤其是在大数据时代,每个数据实体通常都需要一个唯一标识符(ID)来区分其身份。Snowflake算法是由Twitter开源的一种高效且可扩展的分布式ID生成方案,广泛应用...

    C# .net数据库表实体类生成,一键生成数据库所有表的实体类

    public int 示例表Id { get; set; } public string 列1 { get; set; } public int 列2 { get; set; } // 其他列... } ``` 在生成代码的过程中,可以考虑添加一些可配置的选项,比如是否生成属性的`get`/`set`...

    细聊分布式ID生成方法.pdf

    ### 分布式ID生成方法详解 #### 一、引言 在分布式系统中,全局唯一标识符(Global Unique Identifier, GUID)的生成是一项基础而重要的技术。这些标识符被广泛应用于消息传递、订单处理和帖子识别等场景。本文将...

    mysql雪花算法生成唯一整型ID主键的实现方法

    雪花算法是一种分布式ID生成策略,由Twitter开源,其设计目标是在分布式系统中生成具有全局唯一性、有序性和高并发性的ID。在MySQL中实现雪花算法,主要是通过自定义函数来模拟这个过程。 首先,我们需要创建一个名...

    基于MySQL的ID生成器idgo.zip

    idgo是一个利用MySQL批量生成ID的ID生成器, 主要有以下特点:每次通过事务批量取ID,性能较高,且不会对MySQL造成压力.当ID生成器服务崩溃后,可以继续生成有效ID,避免了ID回绕的风险.业界已经有利于MySQL生成ID的方案,...

    ID生成策略

    `Native`策略会根据当前使用的数据库类型选择最合适的ID生成策略。例如,在Oracle中可能会使用`Sequence`,而在MySQL和SQL Server中则使用`Identity`。这种方式使得应用程序无需关心底层数据库的具体实现细节,提高...

    Oracle数据库表序列ID自增生成器

    序列可以在不使用表的情况下单独创建,也可以与表的触发器结合,以自动为新插入的行生成唯一ID。这在多用户环境下尤其有用,确保即使在高并发环境下也能正确地自增ID,避免了ID冲突。 创建序列的基本语法如下: ``...

    自动生成ID(32位)所用jar

    例如,Snowflake算法是一种广泛使用的分布式ID生成策略,由Twitter开源。它生成的是64位的ID,其中包括时间戳、工作节点ID和序列号,可以保证全局唯一且按时间顺序排序。虽然Snowflake不是Apache Commons Lang的一...

Global site tag (gtag.js) - Google Analytics