annotate src/main/java/de/intevation/lada/manage/DataManager.java @ 320:6621f7345c06

Use 'merge' instead of 'persist' since it saves detached objects, too.
author Raimund Renkert <rrenkert@intevation.de>
date Fri, 23 Aug 2013 11:32:21 +0200
parents a305412206a3
children 9d5e4d4eb90f
rev   line source
170
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package de.intevation.lada.manage;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 import javax.ejb.EJBTransactionRolledbackException;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4 import javax.ejb.Stateless;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 import javax.ejb.TransactionAttribute;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 import javax.ejb.TransactionAttributeType;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 import javax.inject.Inject;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8 import javax.inject.Named;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 import javax.persistence.EntityExistsException;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 import javax.persistence.EntityManager;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import javax.persistence.TransactionRequiredException;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13
210
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
14 /**
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
15 * This data manager provides the interface to persist, remove and update
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
16 * database objects.
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
17 *
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
18 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
19 */
170
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 @Stateless
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 @Named("datamanager")
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 public class DataManager
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 implements Manager
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 {
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 @Inject
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 private EntityManager em;
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27
210
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
28 /**
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
29 * Create a new database object.
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
30 *
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
31 * @param object The new object.
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
32 */
170
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 @Override
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 @TransactionAttribute(TransactionAttributeType.REQUIRED)
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 public void create(Object object)
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 throws EntityExistsException,
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 IllegalArgumentException,
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 EJBTransactionRolledbackException,
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 TransactionRequiredException {
320
6621f7345c06 Use 'merge' instead of 'persist' since it saves detached objects, too.
Raimund Renkert <rrenkert@intevation.de>
parents: 210
diff changeset
40 em.merge(object);
6621f7345c06 Use 'merge' instead of 'persist' since it saves detached objects, too.
Raimund Renkert <rrenkert@intevation.de>
parents: 210
diff changeset
41 //em.persist(object);
170
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 }
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43
210
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
44 /**
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
45 * Update a database object.
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
46 *
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
47 * @param object The object to update.
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
48 */
170
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 @Override
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 @TransactionAttribute(TransactionAttributeType.REQUIRED)
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 public void update(Object object)
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 throws EntityExistsException,
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 IllegalArgumentException,
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 EJBTransactionRolledbackException,
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 TransactionRequiredException {
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 em.merge(object);
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 }
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58
210
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
59 /**
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
60 * Delete a database object.
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
61 *
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
62 * @param object The object to delete.
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
63 */
170
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 @Override
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 @TransactionAttribute(TransactionAttributeType.REQUIRED)
210
a305412206a3 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 190
diff changeset
66 public void delete(Object object)
190
bf7488ec0e8d Added method to delete objects from database.
Raimund Renkert <rrenkert@intevation.de>
parents: 170
diff changeset
67 throws IllegalArgumentException,
bf7488ec0e8d Added method to delete objects from database.
Raimund Renkert <rrenkert@intevation.de>
parents: 170
diff changeset
68 TransactionRequiredException {
bf7488ec0e8d Added method to delete objects from database.
Raimund Renkert <rrenkert@intevation.de>
parents: 170
diff changeset
69 em.remove(em.contains(object) ? object : em.merge(object));
170
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 }
18b234ef3733 New interface for data manager and generic implementation of a data manager.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)