`
yan.dev
  • 浏览: 16597 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

JPA入门(openJPA)

    博客分类:
  • JPA
阅读更多

1.环境搭建:

  1.1 JDK 1.6.0.22的下载地址:http://java.sun.com

  1.2 Eclipse IDE for Java EE Developers 3.6.2的下载地址:http://www.eclipse.org/downloads/

  1.3 OpenJPA 2.1.0的下载地址:http://openjpa.apache.org/downloads.html

  1.4 Mysql5.5.9的下载地址:http://dev.mysql.com/downloads/

  1.5 SQuirreL SQL ClientMysql client2.6.4 http://squirrel-sql.sourceforge.net/

  1.6 Apache Tomcat6.0.26的下载地址:http://tomcat.apache.org/download-60.cgi

2 Eclipse配置

2.1 配置Configure User Libraries for JPA



 

2.2 配置数据库连接




3 创建新的JPA Project



 



 



 

4 创建数据库和表

  4.1.SQuirreL SQL Client 创建数据库

 

create database jpadb;

 

 



 

  4.2.编写创建表sql语句:createtable.sql

 

drop table if exists yan_user;
Create TABLE yan_user(
  ID INT NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(20) NOT NULL,
  LOGINID VARCHAR(20) NOT NULL,
  PASSWORD VARCHAR(32) NOT NULL,
  AGE INT NOT NULL,
  PRIMARY KEY(ID)
);

 

 



 


右键:执行所有,eclipse执行sql语句在数据库中创建表完成。



5.Java代码实现



 

5.1

 

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.jpa.dao;

import com.yan.dev.jpa.entity.User;

/**
 * Comment for IUserDao.java
 *
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-24 下午05:06:31
 */
public interface IUserDao {
	public void save(User user) throws Exception;

}
 

 

5.2

 

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.jpa.dao;

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

import com.yan.dev.jpa.entity.User;

/**
 * Comment for UserDaoImpl.java
 * 
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-24 下午05:07:34
 */
public class UserDaoImpl implements IUserDao {

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yan.dao.IUserDao#save(com.yan.entity.User)
	 */
	public void save(User user) throws Exception {
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("FirstJPA");
		EntityManager em = factory.createEntityManager(); 
		EntityTransaction t = em.getTransaction();
		t.begin();
		try {
			em.persist(user);
			t.commit();
		} catch (Exception e) { 
			e.printStackTrace();
			t.rollback();
			throw e;
		} finally { 
			em.close();
			factory.close();
		}
	}

}

 

 

5.3

 

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.jpa.entity;

import static javax.persistence.GenerationType.IDENTITY;

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

/**
 * Comment for User.java
 *
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-24 下午07:01:33
 */
@Entity
@Table(name="yan_user")
public class User {
    public User(){
    	
    }
    @Id
    @GeneratedValue(strategy=IDENTITY) 
	private int ID;
    
    @Column(name = "NAME")
    private String name;
    
    @Column(name = "LOGINID")
    private String loginId;
    
    @Column(name = "PASSWORD")
    private String password;
    
    @Column(name = "AGE")
    private int age;

    public int getId() {
        return ID;
    }

    public String getName() {
        return name;
    }

    public String getLoginId() {
        return loginId;
    }

    public String getPassword() {
        return password;
    }

    public int getAge() {
        return age;
    }

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

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

    public void setLoginId(String loginId) {
        this.loginId = loginId;
    }

    public void setPassword(String password) {
        this.password = password;
    }

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

 

 

5.4

 

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.jpa.service;

import com.yan.dev.jpa.entity.User;

/**
 * Comment for IUserService.java
 *
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-24 下午05:17:01
 */
public interface IUserService {
	public boolean save(User user);

}

 

 

5.5

 

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.jpa.service;

import com.yan.dev.jpa.dao.IUserDao;
import com.yan.dev.jpa.dao.UserDaoImpl;
import com.yan.dev.jpa.entity.User;

/**
 * Comment for UserServiceImpl.java
 * 
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-24 下午05:52:11
 */
public class UserServiceImpl implements IUserService {
	private IUserDao dao;

	public UserServiceImpl() {
		dao = new UserDaoImpl();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yan.service.IUserService#save(com.yan.entity.User)
	 */
	public boolean save(User user) {
		try {
			dao.save(user);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}

		return true;
	}

}

 

5.6.测试类的编写

 

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.jpa.test;

import junit.framework.Assert;

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

import com.yan.dev.jpa.entity.User;
import com.yan.dev.jpa.service.IUserService;
import com.yan.dev.jpa.service.UserServiceImpl;

/**
 * Comment for Testcase.java
 * 
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-24 下午04:52:15
 */
public class Testcase {
	private IUserService service;

	/**
	 * @throws java.lang.Exception
	 */
	@Before
	public void setUp() throws Exception {
		service=new UserServiceImpl();
	}

	/**
	 * @throws java.lang.Exception
	 */
	@After
	public void tearDown() throws Exception {
		service=null;
	}

	@Test
	public void save() {
		User user=new User();
		user.setName("yan.dev2");
		user.setLoginId("yan2");
		user.setPassword("dev2");
		user.setAge(99);
		
		Assert.assertEquals(service.save(user), true);

	}

} 

  

6.persistence.xml的修改

 

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
	<persistence-unit name="FirstJPA" transaction-type="RESOURCE_LOCAL">
		<!-- 定义jpa的Provider -->
		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<!-- 定义持久化实体 -->
		<class>com.yan.dev.jpa.entity.User</class>
		<!-- 定义jpa的数据库参数 -->
		<properties>
			<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/jpadb" />
			<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
			<property name="openjpa.ConnectionUserName" value="root" />
			<property name="openjpa.ConnectionPassword" value="root" />
		</properties>
	</persistence-unit>
</persistence>
 

 

 

7.添加运行参数

VM arguments位置添加AspectJ的参数

 

-javaagent: …/openjpa-all-2.1.0.jar(…为openjpa的位置)

 


8.注意事项

创建表时注意大小写

运行时参数的设置

实体类中id的注释

SquirreL配置时,需要把mysql connetor驱动索引正确

 

  • 大小: 81.2 KB
  • 大小: 97.9 KB
  • 大小: 43.8 KB
  • 大小: 43.3 KB
  • 大小: 18.6 KB
  • 大小: 27.5 KB
  • 大小: 33.2 KB
  • 大小: 29.6 KB
  • 大小: 31.1 KB
分享到:
评论
1 楼 279828322 2012-02-17  
你好,我是刚学习jpa,你的这个项目最后那,要配置VM arguments这个有什么用么

相关推荐

    jsf、openJpa学习

    **JSF与OpenJPA整合** 涉及到在JSF应用中使用OpenJPA进行数据访问。这通常包括配置OpenJPA的数据源、实体管理器工厂,以及在JSF Managed Beans中注入实体管理器,以便在处理用户请求时执行CRUD操作。JSF的事件驱动...

    openjpa openbooks database script

    http://blog.csdn.net/shenhonglei1234/article/details/10352367 openjpa框架入门_项目框架搭建(二) Openjpa2.2+Mysql+Maven+Servlet+JSP

    OpenJpaExample

    **OpenJPA入门案例** 在"OpenJpaExample"这个项目中,通常会包含以下组成部分: 1. **实体类(Entity)**:代表数据库中的表,通过@Entity注解标记,并使用@Id指定主键字段。 2. **持久化单元配置(Persistence....

    JPA核心知识讲解

    JPA 供应商:JPA 的供应商包括 Oracle、Hibernate、OpenJPA 等。 JPA 入门 创建 JPA 步骤: 1. 创建 persistence.xml 文件 2. 编写实体类 3. 创建 EntityManagerFactory 4. 获取 EntityManager JPA 执行过程: ...

    JPA核心知识总结

    4. **JPA供应商**:包括Hibernate、OpenJPA、EclipseLink等,它们实现JPA规范,提供了各自的特性和服务。 5. **JPA技术**:包括实体管理、查询语言(JPQL)、 Criteria API、事务管理、事件监听等。 ### 二、JPA...

    EJB_JPA数据库持久层开发详解

    常见的JPA实现框架包括Hibernate、OpenJPA、TopLink等。其中,Hibernate是最流行的选择,它不仅提供了丰富的功能,还具有高度的灵活性和性能。 #### 对象关系映射(ORM) **对象关系映射**是一种编程技术,用于将...

    jpa用户使用指南 英文版

    **Apache OpenJPA 用户指南** 是一份详尽的文档,旨在帮助开发人员理解和掌握 Java Persistence API (JPA) 的核心概念及其在实际项目中的应用。该指南适用于希望了解如何使用 JPA 进行对象关系映射(ORM)的开发人员...

    Hibernate入门(代码+笔记)

    Hibernate基于Java Persistence API(JPA),它提供了对象关系映射(ORM)功能,将Java类映射到数据库表。首先,你需要下载Hibernate库并将其添加到项目依赖中。接着,配置Hibernate的主配置文件`hibernate.cfg.xml`...

    Java Web编程宝典-十年典藏版 完整版 pdf

    8. **JPA(Java Persistence API)**:用于简化Java应用中的对象关系映射,如Hibernate、OpenJPA等是其实现。通过JPA,可以更直观地处理数据库操作,减少对JDBC的直接依赖。 9. **Web容器**:如Tomcat、Jetty等,...

    ofbiz开发者入门教程

    在本教程中,我们将深入探讨如何入门Apache Ofbiz的开发,这是一个开源的企业级应用框架,专为电子商务、供应链管理和企业资源规划等业务流程设计。Ofbiz提供了强大的组件化架构,使得开发者可以方便地构建和扩展...

    OFBiz开发快速入门

    OFBiz,全称为Open For Business Project,是一款开源的企业级应用框架,主要应用于电子商务、供应链管理、客户关系管理等业务场景。作为一个全面的企业解决方案,OFBiz提供了丰富的功能组件,包括产品目录管理、...

    quickstart-jakarta-ee-guides:适用于多个应用程序服务器的Jakarta EE快速入门指南

    8. **快速入门指南内容**:这些指南可能包含如何配置开发环境、创建第一个Jakarta EE应用、部署到不同应用服务器、使用JPA进行数据访问、实现RESTful Web服务、安全认证和授权等内容。 9. **开发流程**:开发者通常...

    java.lang.NoClassDefFoundError: javax/persistence/EntityListener

    文件名`Spring_OSGi_入门_(Spring_DM_in_Action).pdf`暗示这个问题可能与Spring DM(现在称为Spring OSGi)相关,这是一款用于在OSGI环境中管理Spring应用的框架。 解决这个问题,首先需要检查项目构建配置,确保...

    axelor-open-platform:用于业务应用程序开发的开源Java框架

    在Java编程世界中,Axelor Open Platform具有显著的优势,它基于Java EE标准,如JPA(Java Persistence API)和JSF(JavaServer Faces),这使得开发者可以利用已有的Java知识快速上手。同时,由于其开源性质,...

    EhcacheUserGuide

    #### 三十九、OpenJPA缓存(OpenJPA Caching) OpenJPA是Java Persistence API的一个开源实现。这部分内容介绍了如何将Ehcache与OpenJPA结合起来使用。 #### 四十、Grails缓存(Grails Caching) Grails是基于...

    springboot-learning-example:spring boot实践学习案例,是spring boot初学者及核心技术巩固的最佳实践。另外写博客,用OpenWrite

    推荐工具:-OpenWrite:Markdown微信编辑器是一种专业强大的微信公众平台在线编辑放置工具,提供手机预览功能,让用户在微信图文,文章,内容布局,文本编辑,素材编辑上更加方便。-一,支持泥瓦匠Spring Boot 2.x...

    OFBIZ开发指南 英文

    OFBIZ,全称为Open For Business Project,是一个开源的企业应用套件,旨在提供全面的企业级业务解决方案。该系统由Java编写,基于服务导向架构(SOA),支持Web服务和可扩展标记语言(XML)。OFBIZ提供了包括电子...

Global site tag (gtag.js) - Google Analytics