Hallo zusammen,
um für mich kleinere Snippets zusammen zu stellen, versuche ich mich gerade an JPA per Spring. Hibernate soll hierzu als Provider dienen und als DB soll H2 herhalten. Soweit scheint auch alles zu klappen, meine Entity wird von Hibernate in die Datenbank gespeichert und kann auch bei einem erneuten Start dort heraus geholt werden, ABER öffne ich die Datenbank per SquirrelSQL finde ich dort weder die erzeugte Tabelle noch irgendwas, was mich in dieser Richtung weiterbringen würde...
Hier mal sämtlich Projektsachen:
[XML]<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd Index of /schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd Index of /schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:load-time-weaver />
<context:annotation-config />
<context:component-scan base-package="de.mvitz.examples.spring.jpa" />
<tx:annotation-driven />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />-->
<!-- <property name="url" value="jdbc:derby://localhost:1527/spring-jpa-test;create=true" />-->
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:~/h2-test;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=2" />
<property name="username" value="admin" />
<property name="password" value="secret" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false" />
<property name="generateDdl" value="true" />
<!-- <property name="database" value="DERBY" />-->
<property name="database" value="H2" />
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
</beans>[/XML]
[XML]<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="test" />
</persistence>[/XML]
um für mich kleinere Snippets zusammen zu stellen, versuche ich mich gerade an JPA per Spring. Hibernate soll hierzu als Provider dienen und als DB soll H2 herhalten. Soweit scheint auch alles zu klappen, meine Entity wird von Hibernate in die Datenbank gespeichert und kann auch bei einem erneuten Start dort heraus geholt werden, ABER öffne ich die Datenbank per SquirrelSQL finde ich dort weder die erzeugte Tabelle noch irgendwas, was mich in dieser Richtung weiterbringen würde...
Hier mal sämtlich Projektsachen:
Java:
package de.mvitz.examples.spring.jpa;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
private String value;
public MyEntity() {
}
public MyEntity(final String value) {
this.value = value;
}
public Long getId() {
return id;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return String.format("%d: %s", id, value);
}
}
Java:
package de.mvitz.examples.spring.jpa;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository("service")
@Transactional
public class Service {
@PersistenceContext
private EntityManager em;
public void setEntityManager(EntityManager entityManager) {
this.em = entityManager;
}
public MyEntity createEntity(String value) {
MyEntity e = new MyEntity(value);
em.persist(e);
return e;
}
public MyEntity getEntityForId(long id) {
MyEntity e = em.find(MyEntity.class, id);
return e;
}
}
Java:
package de.mvitz.examples.spring.jpa;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("jpa-spring.xml");
Service service = (Service) ctx.getBean("service");
MyEntity e1 = service.createEntity("test");
System.out.println("Created entity: " + e1);
long id = 1;
MyEntity e2 = service.getEntityForId(id);
System.out.println("Retrieved entity: " + e2);
}
}
[XML]<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd Index of /schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd Index of /schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:load-time-weaver />
<context:annotation-config />
<context:component-scan base-package="de.mvitz.examples.spring.jpa" />
<tx:annotation-driven />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />-->
<!-- <property name="url" value="jdbc:derby://localhost:1527/spring-jpa-test;create=true" />-->
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:~/h2-test;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=2" />
<property name="username" value="admin" />
<property name="password" value="secret" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false" />
<property name="generateDdl" value="true" />
<!-- <property name="database" value="DERBY" />-->
<property name="database" value="H2" />
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
</beans>[/XML]
[XML]<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="test" />
</persistence>[/XML]