`
chenguanwei2008
  • 浏览: 121126 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JPA初步

阅读更多

注:例子来源于《Hibernate In Action》
必要的jar包:
在hibernate所需最小jar包基础上增加ejb3-persistence.jar和hibernate-annotation.jar

首先建立实体类Message.java,并使用Annotation来配置实体的映射关系:

package hello;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "MESSAGES")
public class Message {
	@Id @GeneratedValue
	@Column(name = "MESSAGE_ID")
	private Long id;
	
	@Column(name = "MESSAGE_TEXT")
	private String text;
	
	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "NEXT_MESSAGE_ID")
	private Message nextMessage;
	
	public Message(){}
	
	public Message(String text) {
		this.text = text;
	}

	public Long getId() {
		return id;
	}

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

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public Message getNextMessage() {
		return nextMessage;
	}

	public void setNextMessage(Message nextMessage) {
		this.nextMessage = nextMessage;
	}
	
}

 然后在src目录下建立META-INF文件夹,并在在MEAT-INF中新建persistence.xml文件:

<?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="helloworld">
        <!--
        <properties>
            <property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml"/>
        </properties>
    	 -->
    	 <provider>org.hibernate.ejb.HibernatePersistence</provider>
    	 
    	 <!-- Not needed,Hibernate supports auto-dection in JSE 
    	 	<class>hello.Message</class>
    	 -->
    	 
    	 <properties>
    	 	<!-- Auto detection -->
    	 	<property name="hibernate.archive.autodetection" value="class,hbm"/>
    	 	
    	 	<property name="hibernate.show_sql" value="true"/>
    	 	<property name="hibernate.format_sql" value="true"/>
    	 	<property name="hibernate.hbm2ddl.auto" value="update"/>
    	 	
    	 	<property name="hibernate.connection.driver_class" 
    	 			  value="com.mysql.jdbc.Driver"/>
    	 	<property name="hibernate.connection.url"
    	 			  value="jdbc:mysql://localhost:3306/hibernateEM"/>
    	 	<property name="hibernate.connection.username" value="root"/>
    	 	<property name="hibernate.connection.password" value="root"/>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
    	
    		<!-- Use the C3P0 connection pool provider -->
			<property name="hibernate.c3p0.min_size" value="5"/>
			<property name="hibernate.c3p0.max_size" value="20"/>
			<property name="hibernate.c3p0.timeout" value="300"/>
			<property name="hibernate.c3p0.max_statements" value="50"/>
			<property name="hibernate.c3p0.idle_test_period" value="50"/>
    	 </properties>
    </persistence-unit>
</persistence>

 最后编写测试类:

package hello;

import java.util.List;

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

public class HelloWorld {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		//start EntityManagerFactory
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("helloworld");
		//First unit of work
		EntityManager em = emf.createEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		
		Message message = new Message("Hello World");
		em.persist(message);
		
		tx.commit();
		em.close();
		
		//Second unit of work
		EntityManager newEm = emf.createEntityManager();
		EntityTransaction newTx = newEm.getTransaction();
		newTx.begin();
		
		List messages = newEm.createQuery("select m from Message m order by m.text asc").getResultList();
		
		System.out.println(messages.size() + "messages(s) found");
		
		for(Object m : messages) {
			Message loadedMsg = (Message)m;
			System.out.println(loadedMsg.getText());
		}
		
		newTx.commit();
		newEm.close();
	
		//Shutting down the application
		emf.close();
	}

}
 
分享到:
评论

相关推荐

    spring-data-jpa初步开始的helloworld

    NULL 博文链接:https://lihao312.iteye.com/blog/2075659

    JPA快速入门初步(myeclipse)

    在"JPA快速入门初步(myeclipse)"中,我们将学习如何在MyEclipse中设置JPA项目,理解基本的JPA概念,以及如何使用注解来定义实体和映射数据库表。 1. **JPA基础概念**: - **实体(Entity)**: 表示数据库中的表...

    JPA+SPRING权限系统初步框架

    标题中的“JPA+SPRING权限系统初步框架”是指基于Java Persistence API (JPA) 和Spring框架构建的一个初步的权限管理系统。这样的系统主要用于管理用户权限,确保不同用户只能访问其被授权的数据或功能。 1. **Java...

    JPA学习笔记-EJB-02JPA属性注解

    在上一篇文章中,我们简要介绍了Java Persistence API (JPA)的基础知识,包括它的基本部署和操作流程,从而让我们对JPA有了初步的认识。本文将继续深入探讨JPA的核心概念之一——注解标记,特别是`@Table`和`@Column...

    EJB_JPA数据库持久层开发详解

    在实际开发中,"EJB_JPA数据库持久层开发详解"这本书的前7章可能会涵盖这些基本概念和初步应用。通过学习这部分内容,开发者可以掌握EJB环境下的JPA基础,为进一步深入学习和实践打下坚实的基础。然而,完整的EJB-...

    tomee-mvn-plugin-jpa21-setup:小型设置可以开始在TomEE 1中使用JPA 2.1

    初步说明 TomEE 7(目前仍在开发中)开箱即用地支持JPA 2.1。 但是,OpenJPA现在仍然是JPA 2.0,因此,使用TomEE 7,您只需切换提供程序即可获得完整的JPA 2.1支持。 所有这些示例过程仅适用于TomEE 1。 局限性 ...

    website-mvc-jpa-h2:Spring个人网站

    该系列文章,以Spring作为技术主线,搭建个人网站,初步包含6篇文章,文章将逐步上线:Spring Boot Hello World : 如何使用Spring Boot构建web项目Spring MVC, JPA, H2数据库 : 模板技术,对象设计,JPA连接内存...

    rhsProto:使用 JPA 和主要面Kong的原型应用程序

    描述中的"原型"表明这是一个实验性的或初步的设计,旨在展示如何将 JPA 与 Kong 结合使用。JPA 用于处理应用程序的数据库交互,而 Kong 则可能被用作前端应用与后端服务之间的桥梁,提供API管理和安全控制。 【标签...

    k7tm-backend:【基础源码】一个基于Spring Boot 2.1.0,Spring Boot Jpa,JWT,Spring Security,Redis,Vue的前分离分离的教学管理后台系统

    可期教学管理系统-初步项目简介一个基于Spring Boot 2.1.0,Spring Boot Jpa&MyBatis Plus,JWT,Spring Security,Redis,Vue的前分离分离的教学管理后台系统开发文档:暂无体验地址:暂无账号密码:暂无项目源码...

    初步了解java编程语言

    Java编程语言是面向...以上只是Java编程语言基础知识的一部分,随着学习深入,还有更高级的话题如设计模式、并发编程、Spring框架、JPA、JDBC等。对于初学者来说,理解并掌握这些概念是进一步学习Java技术栈的基础。

    spring 6初步使用

    3. Spring Data:简化数据库访问,支持多种持久化技术,如JPA、Hibernate和MyBatis等。 4. Spring Security:提供安全控制,包括身份验证、授权和加密等功能。 5. Spring WebFlux:针对反应式编程的模块,利用...

    权限管理系统:使用SpringBootWebFlux + Shiro + JPA + JavaScala,实现基于数据库细粒度动态权限管理系统

    SpringBoot数据Jpa 阿帕克史郎 React堆 高速缓存 雷迪斯 自由标记 功能 控制器初步 服务初步 Dao依赖于JDBC和ORM,暂未更改成初始 去除Druid和多数据源 TODO链式调用,尽量去掉显示调用subscribe (分支rm-...

    智能销售系统项目开发进程day01

    在智能销售系统项目开发的第一天,我们主要关注的是基础架构的搭建和核心功能的初步实现。这个项目采用了Java技术栈,结合了Spring、SpringMVC和JPA等关键框架,来构建一个高效、灵活的后端系统。接下来,我们将详细...

    JavaEE项目开发初步教程+安装包

    它包含了丰富的API和服务,如Servlet、JSP、EJB、JMS、JPA等,用于处理Web服务、数据库连接、事务管理等多个方面。 首先,我们需要了解JavaEE项目的生命周期。在项目开发初期,通常会进行需求分析和系统设计,包括...

    EJB3.0初步应用源码

    - **实体管理**:EJB3.0集成了JPA(Java Persistence API),使得数据库操作更加简单。 - **简化事务管理**:EJB3.0提供了声明式事务管理,开发者无需编写复杂的事务控制代码。 通过以上介绍,我们可以看到,EJB3.0...

    web小项目初步整合hibernate

    Hibernate支持JPA(Java Persistence API),并且兼容各种主流的数据库系统,如MySQL、Oracle、PostgreSQL等。 在Web项目中集成Hibernate,通常会涉及以下几个步骤: 1. **配置**:在项目中引入Hibernate的依赖库...

    初步学习web.zip

    【标题】: 初步学习Web开发:使用德鲁伊数据连接池与Tomcat搭建本地服务器 【描述】: 在Web开发的初期阶段,我们需要掌握基础的环境搭建和数据库操作。这里我们将使用德鲁伊(Druid)数据连接池来管理数据库连接,...

    wuzhaojunSpringboot:javaSpringboot初步

    在这个“wuzhaojunSpringboot:javaSpringboot初步”中,我们将深入探讨Spring Boot的基础知识和核心特性。 首先,Spring Boot的核心特性之一是自动配置。它通过扫描项目中的类路径来判断你需要哪些Spring功能,并...

    k7tm-pc:【前端原始代码】一个基于Spring Boot 2.1.0,Spring Boot Jpa&MyBatis Plus,JWT,Spring Security,Redis,Vue的前分离分离的教学管理后台系统

    可期教学管理系统-PC端项目简介一个基于Spring Boot 2.1.0,Spring Boot Jpa&MyBatis Plus,JWT,Spring Security,Redis,Vue的前分离分离的教学管理后台系统项目源码开源平台初步源码前端原始码的github 开发文档...

    java Query接口初步.avi

    Java中的Query接口并未在描述和标签中明确提及,但我们可以借此机会深入...在实际编程中,Query接口可能是JPA(Java Persistence API)的一部分,用于执行数据库查询,但它不在提供的信息范围内,因此没有详细展开。

Global site tag (gtag.js) - Google Analytics