|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example | Line # 42 | 34 | 0% | 3 | 0 | 100% |
1.0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
(1) | |||
Result | |||
1.0
|
org.perfectjpattern.jee.integration.dao.hibernate.TestExample.testHibernateGenericDao
![]() |
1 PASS | |
1 | //---------------------------------------------------------------------- | |
2 | ||
3 | //PerfectJPattern: "Design patterns are good but components are better!" | |
4 | //Example.java Copyright (c) 2009 Giovanni Azua Garcia | |
5 | //bravegag@hotmail.com | |
6 | ||
7 | //This program is free software; you can redistribute it and/or | |
8 | //modify it under the terms of the GNU General Public License | |
9 | //as published by the Free Software Foundation; either version 3 | |
10 | //of the License, or (at your option) any later version. | |
11 | ||
12 | //This program is distributed in the hope that it will be useful, | |
13 | //but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | //GNU General Public License for more details. | |
16 | ||
17 | //You should have received a copy of the GNU General Public License | |
18 | //along with this program; if not, see <http://www.gnu.org/licenses/>. | |
19 | //Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | |
20 | //MA 02110-1301, USA. | |
21 | ||
22 | //---------------------------------------------------------------------- | |
23 | package org.perfectjpattern.jee.integration.dao.hibernate; | |
24 | ||
25 | import java.text.*; | |
26 | import java.util.*; | |
27 | ||
28 | import org.perfectjpattern.example.datamodel.*; | |
29 | import org.perfectjpattern.example.datamodel.visitor.*; | |
30 | import org.perfectjpattern.jee.api.integration.dao.*; | |
31 | import org.perfectjpattern.jee.integration.dao.*; | |
32 | import org.slf4j.*; | |
33 | ||
34 | /** | |
35 | * Startup Main for the Hibernate Generic Dao example code | |
36 | * | |
37 | * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a> | |
38 | * @version $ $Date: Dec 5, 2008 2:04:37 AM $ | |
39 | */ | |
40 | //CHECKSTYLE:OFF | |
41 | public final | |
42 | class Example | |
43 | // CHECKSTYLE:ON | |
44 | { | |
45 | //------------------------------------------------------------------------ | |
46 | // public | |
47 | //------------------------------------------------------------------------ | |
48 | 1 |
![]() |
49 | main(String[] anArguments) | |
50 | throws ParseException | |
51 | { | |
52 | // ToStringVisitor needs loading a ResourceBundle | |
53 | 1 | Locale.setDefault(new Locale("en", "US")); |
54 | ||
55 | //--------------------------------------------------------------- | |
56 | // Create fixture/ business model | |
57 | //--------------------------------------------------------------- | |
58 | 1 | Product myProduct1 = new Product("Nikon D300", 2000.0); |
59 | 1 | Product myProduct2 = new Product("Nikon D40x", 350.0); |
60 | 1 | Product myProduct3 = new Product("Nikon 80-400mm", 1500.0); |
61 | ||
62 | 1 | Customer myCustomer1 = new Customer("Ernesto"); |
63 | ||
64 | 1 | Date myDate = DATE_FORMAT.parse("14.03.2007 08:00:00"); |
65 | 1 | Set<Product> myProducts = new HashSet<Product>(); |
66 | 1 | myProducts.addAll(Arrays.asList(new Product[] {myProduct1, |
67 | myProduct2, myProduct3 })); | |
68 | 1 | Order myOrder1 = new Order(myCustomer1, myDate, myProducts); |
69 | ||
70 | 1 | myCustomer1.getOrders().add(myOrder1); |
71 | ||
72 | 1 | try |
73 | { | |
74 | //----------------------------------------------------------- | |
75 | // Accesses the AbstractFactory singleton HibernateDaoFactory | |
76 | // and persists Customer model in storage. Note how the | |
77 | // HibernateDaoFactory hides the framework-specific complexities. | |
78 | // By default it gets initialized to use: | |
79 | // | |
80 | // - HibernateCurrentSessionStrategy: | |
81 | // a) Creates SessionFactory from Configuration | |
82 | // b) Uses the getCurrentSession Hibernate API that | |
83 | // looks into the "current_session_context_class" | |
84 | // configuration, for this example is set to "thread" | |
85 | // | |
86 | // - HibernateConfiguredTransactionStrategy: | |
87 | // Simply accesses the Session Strategy and calls | |
88 | // getTransaction, that will load whatever is configured | |
89 | // in "hibernate.transaction_factory" configuration | |
90 | //----------------------------------------------------------- | |
91 | 1 | IGenericDao<Long, Customer> myCustomerDao = HibernateDaoFactory. |
92 | getInstance().createDao(Customer.class); | |
93 | 1 | myCustomerDao.create(myCustomer1); |
94 | ||
95 | //----------------------------------------------------------- | |
96 | // Update the Customer model/ add new Product and Order | |
97 | //----------------------------------------------------------- | |
98 | 1 | Product myProduct4 = new Product("Nikon Fisheye 10mm", 900.0); |
99 | ||
100 | 1 | myDate = DATE_FORMAT.parse("19.10.2007 08:00:00"); |
101 | 1 | myProducts = new HashSet<Product>(); |
102 | 1 | myProducts.add(myProduct4); |
103 | 1 | Order myNewOrder = new Order(myCustomer1, myDate, myProducts); |
104 | ||
105 | 1 | myCustomer1.getOrders().add(myNewOrder); |
106 | 1 | myCustomerDao.update(myCustomer1); |
107 | ||
108 | //----------------------------------------------------------- | |
109 | // Commit changes. Note how accessing whatever Transaction | |
110 | // implementation is transparent to the client | |
111 | //----------------------------------------------------------- | |
112 | 1 | myCustomerDao.getTransaction().commit(); |
113 | ||
114 | //----------------------------------------------------------- | |
115 | // Delete one Product | |
116 | //----------------------------------------------------------- | |
117 | 1 | myOrder1.getProducts().remove(myProduct2); |
118 | ||
119 | 1 | IGenericDao<Long, Order> myOrderDao = HibernateDaoFactory. |
120 | getInstance().createDao(Order.class); | |
121 | 1 | myOrderDao.update(myOrder1); |
122 | ||
123 | //----------------------------------------------------------- | |
124 | // Commit changes. | |
125 | //----------------------------------------------------------- | |
126 | 1 | myCustomerDao.getTransaction().commit(); |
127 | ||
128 | //----------------------------------------------------------- | |
129 | // Clear the cache | |
130 | //----------------------------------------------------------- | |
131 | 1 | myCustomerDao.getSession().clear(); |
132 | ||
133 | //----------------------------------------------------------- | |
134 | // Retrieve all Customers | |
135 | //----------------------------------------------------------- | |
136 | 1 | List<Customer> myCustomers = myCustomerDao.findAll(); |
137 | ||
138 | 1 | ToStringVisitor myVisitor = new ToStringVisitor(); |
139 | 1 | for (Customer myCustomer : myCustomers) |
140 | { | |
141 | 1 | myVisitor.visit(myCustomer); |
142 | 1 | String myResult = myVisitor.getResult(); |
143 | ||
144 | 1 | theLogger.debug(myResult); |
145 | } | |
146 | } | |
147 | finally | |
148 | { | |
149 | //----------------------------------------------------------- | |
150 | // Final cleanup | |
151 | //----------------------------------------------------------- | |
152 | 1 | HibernateDaoFactory.getInstance().shutdown(); |
153 | } | |
154 | } | |
155 | ||
156 | //------------------------------------------------------------------------ | |
157 | // protected | |
158 | //------------------------------------------------------------------------ | |
159 | 1 |
![]() |
160 | setLogger(Logger aLogger) | |
161 | { | |
162 | 1 | theLogger = aLogger; |
163 | } | |
164 | ||
165 | //------------------------------------------------------------------------ | |
166 | // members | |
167 | //------------------------------------------------------------------------ | |
168 | /** | |
169 | * Provides logging facilities for this class | |
170 | */ | |
171 | private static Logger theLogger = LoggerFactory.getLogger(Example.class); | |
172 | private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat( | |
173 | "dd.MM.yyyy HH:mm:ss"); | |
174 | } |
|