Skip to content
Snippets Groups Projects
Commit afb80f93 authored by Goik Martin's avatar Goik Martin
Browse files

Eclipse table per class hierarchy

parent 2557e1c5
No related branches found
No related tags found
No related merge requests found
A1.log
/target/
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.hdm-stuttgart.mi.sda2.jpa</groupId>
<artifactId>billing_tpch</artifactId>
<version>0.9</version>
<packaging>jar</packaging>
<name>billing_tpch</name>
<!--Fixme: Add a sensible project related domain here -->
<url>http://somedomain.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.33</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.1</version>
<configuration />
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>de.hdm_stuttgart.mi.sda2.jpa.cd.App</Main-Class>
</manifestEntries>
</transformer>
</transformers>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
package de.hdm_stuttgart.mi.sda2.jpa.cd.domain;
import javax.persistence.Entity;
/**
* pay by wire transfer
*
*/
@Entity
public class BankAccount extends BillingDetail {
String iban;
}
package de.hdm_stuttgart.mi.sda2.jpa.cd.domain;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
/**
* Base class for payment related purposes
*
*/
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="")
public abstract class BillingDetail {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long id;
@Column(nullable=false)
String owner;
protected BillingDetail() {}
@SuppressWarnings("javadoc")
public BillingDetail(final String owner) {
setOwner(owner);
}
@SuppressWarnings("javadoc")
public String getOwner() {
return owner;
}
@SuppressWarnings("javadoc")
public void setOwner(String owner) {
this.owner = owner;
}
@SuppressWarnings("javadoc")
public Long getId() {
return id;
}
}
package de.hdm_stuttgart.mi.sda2.jpa.cd.domain;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Credit card payment
*
*/
@Entity
public class CreditCard extends BillingDetail {
String cardCompany;
@Temporal(TemporalType.DATE)
Date expiry;
protected CreditCard() {
super();
}
@SuppressWarnings("javadoc")
public CreditCard(final String owner, final String company, final Date expiry) {
super(owner);
setCardCompany(company);
setExpiry(expiry);
}
@SuppressWarnings("javadoc")
public String getCardCompany() {
return cardCompany;
}
@SuppressWarnings("javadoc")
public void setCardCompany(String cardCompany) {
this.cardCompany = cardCompany;
}
@SuppressWarnings("javadoc")
public Date getExpiry() {
return expiry;
}
@SuppressWarnings("javadoc")
public void setExpiry(Date expiry) {
this.expiry = expiry;
}
}
package de.hdm_stuttgart.mi.sda2.jpa.university;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.xml.bind.JAXBException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import de.hdm_stuttgart.mi.sda2.jpa.cd.domain.CreditCard;
/**
* A simple http://logging.apache.org/log4j/2.x demo, see file log4j2.xml for
* configuration options.
*
*/
public class Driver {
private static Logger log = LogManager.getLogger(Driver.class);
/**
* @param args
* Unused
* @throws JAXBException
*/
public static void main(String[] args) throws JAXBException {
final EntityManagerFactory factory = Persistence
.createEntityManagerFactory("persistenceUnit");
final EntityManager manager = factory.createEntityManager();
final EntityTransaction tx = manager.getTransaction();
final CreditCard myCard = new CreditCard("Joe Blix", "Visa", new Date());
tx.begin();
{
manager.persist(myCard);
}
tx.commit();
log.info("done!");
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<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" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<!-- shouldn't be valid for java SE per specification, but it works for EclipseLink ... -->
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hdm" />
<property name="javax.persistence.jdbc.user" value="hdmuser" />
<property name="javax.persistence.jdbc.password" value="XYZ" />
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
<property name="eclipselink.logging.level" value="SEVERE"/>
<!-- Logging SQL operations -->
<property name="eclipselink.logging.level.sql" value="FINE"/>
<property name="eclipselink.logging.parameters" value="true"/>
</properties>
</persistence-unit>
</persistence>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<File name="A1" fileName="A1.log" append="false">
<PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- You my want to define class or package level per-logger rules -->
<Logger name="de.hdm_stuttgart.mi.sda2.jpa.cd.App" level="debug">
<AppenderRef ref="A1"/>
</Logger>
<Root level="debug">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
\ No newline at end of file
source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment