Mysql maven jpa骨架

cou*_*ech 5 java mysql maven-2 jpa eclipselink

是否有使用mysql的项目的骨架,一些与RESOURCE_LOCAL作为连接类型的eclipse/top链接?最好使用maven.我正在寻找它几个小时,甚至不能运行最狡猾的exaple.所以,如果你准备好并且正在运行,请发布:-).即使是像这两个类一样简单的东西.


@Entity
public class Message implements Serializable{
    public Message() {}
    public Message(String s){
        this.s = s;
    }
    @Id
    String s;
    public String getS(){
        return s;
    }
}
public class App {
    static private EntityManagerFactory emf;
    static private EntityManager em;
    public static void main( String[] args ) {
        emf = Persistence.createEntityManagerFactory("persistence");
        em = emf.createEntityManager();
        Message m = new Message("abc");
        em.persist(m);
    }
}

Pas*_*ent 3

Maven 有一个 JPA 应用程序的原型,可以从内部目录中获取

$ mvn 原型:生成
[信息] 正在扫描项目...
[信息] 正在存储库中搜索前缀为“archetype”的插件。
[信息] ---------------------------------------------------------- ------------------------
[INFO] 构建 Maven 默认项目
[INFO] 任务段:[archetype:generate](聚合器样式)
[信息] ---------------------------------------------------------- ------------------------
[INFO] 准备原型:生成
[INFO] 项目不需要目标 - 跳过
[信息] 设置属性:classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'。
[信息] 设置属性:velocimacro.messages.on => 'false'。
[信息] 设置属性:resource.loader => 'classpath'。
[信息] 设置属性:resource.manager.logwhenfound => 'false'。
[信息] [原型:生成{执行:default-cli}]
[INFO] 在交互模式下生成项目
[信息] 未定义原型。使用maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
选择原型:
...
23:内部 -> jpa-maven-archetype(JPA 应用程序)
...
选择一个数字:(1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23 /24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41) 15: :

或者更直接地说:

mvn archetype:generate \
  -DgroupId=com.mycompany.myproject \
  -DartifactId=my-project-domain \
  -DpackageName=com.mycompany.myproject.domain \
  -DarchetypeGroupId=com.rfc.maven.archetypes \
  -DarchetypeArtifactId=jpa-maven-archetype  \
  -DarchetypeVersion=1.0.0 \
  -DremoteRepositories=http://maven.rodcoffin.com/repo \
  -DinteractiveMode=false
Run Code Online (Sandbox Code Playgroud)

这将使用 Hibernate、HSQLDB 和 DbUnit 测试生成一个不错的项目。现在,cd进入创建的目录进行一些更改。

首先,编辑pom.xml. 删除 Hibernate 相关工件并用 EclipseLink 替换它们(您将需要一个额外的存储库):

<project>
  ...
  <repositories>
    <repository>
      <id>eclipselink</id>
      <url>http://www.eclipse.org/downloads/download.php?r=1&amp;nf=1&amp;file=/rt/eclipselink/maven.repo/</url>
    </repository>
  </repositories>
  <dependencies>
    <!-- See http://wiki.eclipse.org/EclipseLink/Maven -->
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>eclipselink</artifactId>
      <version>2.0.0</version>
    </dependency>
    <!-- optional - only needed if you are using JPA outside of a Java EE container-->
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>javax.persistence</artifactId>
      <version>2.0.0</version>
      <scope>provided</scope>
    </dependency>
    ...
  </dependencies>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

然后修改persistence.xml(注意下面有2个持久化单元,填满的那个是测试时用的):

<?xml version="1.0"?>
<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_2_0.xsd"
  version="2.0">
  <persistence-unit name="my-project-domain"/>
  <persistence-unit name="my-project-domain-test" transaction-type="RESOURCE_LOCAL">
    <class>com.mycompany.myproject.User</class>
    <properties>
      <property name="eclipselink.target-database" value="HSQL"/>
      <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
      <property name="javax.persistence.jdbc.user" value="sa"/>
      <property name="javax.persistence.jdbc.password" value=""/>
      <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:my-project-test"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

就这样。我已将修改后的内容发布pom.xmlpastebin.com上。要使用 MySQL,请将 JDBC 驱动程序添加为依赖项pom.xml并复制 EclipseLink 配置。这应该很简单,可以作为读者的练习:) 如果出现阻塞问题,请发表评论,我会看看是否可以提供帮助。


如果您想再次通过测试,则必须替换以下行UserTest.java

HibernateEntityManager em = (HibernateEntityManager) emf.createEntityManager();

DbUnitDataLoader loader = new DbUnitDataLoader(testData, em.getSession().connection());
Run Code Online (Sandbox Code Playgroud)

经过

EntityManager em = emf.createEntityManager();
Connection conn = em.unwrap(java.sql.Connection.class);
conn.setAutoCommit(true);

DbUnitDataLoader loader = new DbUnitDataLoader(testData, conn);
Run Code Online (Sandbox Code Playgroud)