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

continuing three main inheritance strategies

parent 623334ca
No related branches found
No related tags found
No related merge requests found
Showing with 3484 additions and 1167 deletions
......@@ -12,21 +12,21 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import de.hdm_stuttgart.mi.sda2.jpa.billing.domain.CreditCard;
import de.hdm_stuttgart.mi.sda2.jpa.billing.domain.Customer;
/**
* 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);
public class CreateData {
private static Logger log = LogManager.getLogger(CreateData.class);
/**
* @param args
* Unused
* @throws JAXBException
*/
public static void main(String[] args) throws JAXBException {
public static void main(String[] args) {
final EntityManagerFactory factory = Persistence
.createEntityManagerFactory("persistenceUnit");
......@@ -34,11 +34,14 @@ public class Driver {
final EntityTransaction tx = manager.getTransaction();
final CreditCard myCard = new CreditCard("Joe Blix", "Visa", new Date());
tx.begin();
{
manager.persist(myCard);
final Customer customer = new Customer("Joe Blix");
final CreditCard myCard = new CreditCard(customer, "Visa");
myCard.setExpiry(new Date());
manager.persist(customer);
}
tx.commit();
log.info("done!");
......
package de.hdm_stuttgart.mi.sda2.jpa.billing;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import de.hdm_stuttgart.mi.sda2.jpa.billing.domain.BillingDetail;
import de.hdm_stuttgart.mi.sda2.jpa.billing.domain.Customer;
/**
* A simple http://logging.apache.org/log4j/2.x demo, see file log4j2.xml for
* configuration options.
*
*/
public class ReadData {
private static Logger log = LogManager.getLogger(ReadData.class);
/**
* @param args Unused
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
final EntityManagerFactory factory = Persistence
.createEntityManagerFactory("persistenceReadUnit");
final EntityManager manager = factory.createEntityManager();
final EntityTransaction tx = manager.getTransaction();
final Query searchCustomer = manager.createQuery("select c from Customer c");
tx.begin();
{
final List<Customer> customers = searchCustomer.getResultList();
for (final Customer c: customers) {
System.out.println("---------------------\n" + c.getName());
for (final BillingDetail b : c.getBillings()) {
System.out.println(b);
}
}
}
tx.commit();
log.info("done!");
}
}
package de.hdm_stuttgart.mi.sda2.jpa.billing.domain;
import javax.persistence.Entity;
/**
* pay by wire transfer
*
*/
@Entity
@Entity
public class BankAccount extends BillingDetail {
String iban;
}
String iban;
protected BankAccount() {
super();
}
@SuppressWarnings("javadoc")
public BankAccount(final Customer customer, final String iban) {
super(customer);
setIban(iban);
}
public String getIban() {
return iban;
}
public void setIban(String iban) {
this.iban = iban;
}
}
package de.hdm_stuttgart.mi.sda2.jpa.billing.domain;
import javax.persistence.Column;
import javax.persistence.CascadeType;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
......@@ -8,6 +9,7 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToOne;
/**
* Base class for payment related purposes
......@@ -20,30 +22,36 @@ public abstract class BillingDetail {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long id;
@Column(nullable=false)
String owner;
@ManyToOne(cascade= CascadeType.ALL)
Customer customer;
protected BillingDetail() {}
@SuppressWarnings("javadoc")
public BillingDetail(final String owner) {
setOwner(owner);
public BillingDetail(Customer customer) {
customer.addBilling(this);
}
@SuppressWarnings("javadoc")
public String getOwner() {
return owner;
public Long getId() {
return id;
}
public Customer getCustomer() {
return customer;
}
@SuppressWarnings("javadoc")
public void setOwner(String owner) {
this.owner = owner;
public void setCustomer(Customer customer) {
this.customer = customer;
}
@SuppressWarnings("javadoc")
public Long getId() {
return id;
@Override
public String toString() {
return "Account of " + customer.getName();
}
}
......@@ -2,6 +2,7 @@ package de.hdm_stuttgart.mi.sda2.jpa.billing.domain;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
......@@ -16,6 +17,7 @@ import javax.persistence.TemporalType;
public class CreditCard extends BillingDetail {
String cardCompany;
@Column(nullable=false)
@Temporal(TemporalType.DATE)
Date expiry;
......@@ -25,10 +27,9 @@ public class CreditCard extends BillingDetail {
}
@SuppressWarnings("javadoc")
public CreditCard(final String owner, final String company, final Date expiry) {
super(owner);
public CreditCard(final Customer customer, final String company) {
super(customer);
setCardCompany(company);
setExpiry(expiry);
}
@SuppressWarnings("javadoc")
......@@ -49,5 +50,13 @@ public class CreditCard extends BillingDetail {
@SuppressWarnings("javadoc")
public void setExpiry(Date expiry) {
this.expiry = expiry;
}
@Override
public String toString() {
return getCardCompany() + " credit card, expiry =" + getExpiry() + ", " + super.toString();
}
}
package de.hdm_stuttgart.mi.sda2.jpa.billing.domain;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Customer {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
Long id;
@Column(nullable=false)
String name;
@OneToMany(mappedBy="customer", cascade= CascadeType.ALL)
List<BillingDetail> billings = new ArrayList<BillingDetail>();
protected Customer() {}
public Customer(final String name) {
setName(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void addBilling(final BillingDetail billing) {
billings.add(billing);
billing.setCustomer(this);
}
public List<BillingDetail> getBillings() {
return billings;
}
}
......@@ -6,21 +6,44 @@
<!-- 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-unit name="persistenceReadUnit" 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="none" />
<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
This diff is collapsed.
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