Create Query From Entity Manager
22854 ワード
1 File: Professor.java
2
3
4 import javax.persistence.Entity;
5 import javax.persistence.Id;
6
7 @Entity
8 public class Professor {
9 @Id
10 private int id;
11 private String name;
12 private long salary;
13
14 public Professor() {}
15 public Professor(int id) {
16 this.id = id;
17 }
18
19 public int getId() {
20 return id;
21 }
22
23 public void setId(int id) {
24 this.id = id;
25 }
26
27 public String getName() {
28 return name;
29 }
30
31 public void setName(String name) {
32 this.name = name;
33 }
34
35 public long getSalary() {
36 return salary;
37 }
38
39 public void setSalary(long salary) {
40 this.salary = salary;
41 }
42
43 public String toString() {
44 return "Professor id: " + getId() + " name: " + getName() + " salary: " + getSalary();
45 }
46 }
47
48
49 File: ProfessorService.java
50
51 import java.util.Collection;
52
53 import javax.persistence.EntityManager;
54 import javax.persistence.Query;
55
56 public class ProfessorService {
57 protected EntityManager em;
58
59 public ProfessorService(EntityManager em) {
60 this.em = em;
61 }
62
63 public Professor createProfessor(int id, String name, long salary) {
64 Professor emp = new Professor(id);
65 emp.setName(name);
66 emp.setSalary(salary);
67 em.persist(emp);
68 return emp;
69 }
70
71 public void removeProfessor(int id) {
72 Professor emp = findProfessor(id);
73 if (emp != null) {
74 em.remove(emp);
75 }
76 }
77
78 public Professor raiseProfessorSalary(int id, long raise) {
79 Professor emp = em.find(Professor.class, id);
80 if (emp != null) {
81 emp.setSalary(emp.getSalary() + raise);
82 }
83 return emp;
84 }
85
86 public Professor findProfessor(int id) {
87 return em.find(Professor.class, id);
88 }
89
90 public Collection<Professor> findAllProfessors() {
91 Query query = em.createQuery("SELECT e FROM Professor e");
92 return (Collection<Professor>) query.getResultList();
93 }
94 }
95
96
97 File: JPAUtil.java
98
99 import java.io.Reader;
100 import java.sql.Connection;
101 import java.sql.DriverManager;
102 import java.sql.ResultSet;
103 import java.sql.ResultSetMetaData;
104 import java.sql.Statement;
105
106 public class JPAUtil {
107 Statement st;
108
109 public JPAUtil() throws Exception{
110 Class.forName("org.hsqldb.jdbcDriver");
111 System.out.println("Driver Loaded.");
112 String url = "jdbc:hsqldb:data/tutorial";
113
114 Connection conn = DriverManager.getConnection(url, "sa", "");
115 System.out.println("Got Connection.");
116 st = conn.createStatement();
117 }
118 public void executeSQLCommand(String sql) throws Exception {
119 st.executeUpdate(sql);
120 }
121 public void checkData(String sql) throws Exception {
122 ResultSet rs = st.executeQuery(sql);
123 ResultSetMetaData metadata = rs.getMetaData();
124
125 for (int i = 0; i < metadata.getColumnCount(); i++) {
126 System.out.print("\t"+ metadata.getColumnLabel(i + 1));
127 }
128 System.out.println("
----------------------------------");
129
130 while (rs.next()) {
131 for (int i = 0; i < metadata.getColumnCount(); i++) {
132 Object value = rs.getObject(i + 1);
133 if (value == null) {
134 System.out.print("\t ");
135 } else {
136 System.out.print("\t"+value.toString().trim());
137 }
138 }
139 System.out.println("");
140 }
141 }
142 }
143
144
145 File: Main.java
146
147 import java.util.Collection;
148 import java.util.Iterator;
149
150 import javax.persistence.EntityManager;
151 import javax.persistence.EntityManagerFactory;
152 import javax.persistence.Persistence;
153
154 public class Main {
155 public static void main(String[] a) throws Exception {
156 JPAUtil util = new JPAUtil();
157
158 EntityManagerFactory emf = Persistence.createEntityManagerFactory("ProfessorService");
159 EntityManager em = emf.createEntityManager();
160 ProfessorService service = new ProfessorService(em);
161
162 em.getTransaction().begin();
163
164 Professor emp = service.createProfessor(1,"name", 100);
165 emp = service.createProfessor(2,"name 2", 100);
166
167 Collection emps = em.createQuery("SELECT e FROM Professor e").getResultList();
168 for (Iterator i = emps.iterator(); i.hasNext();) {
169 Professor e = (Professor) i.next();
170 System.out.println("Professor " + e.getId() + ", " + e.getName());
171 }
172 util.checkData("select * from Professor");
173
174 em.getTransaction().commit();
175 em.close();
176 emf.close();
177 }
178 }
179
180
181
182
183 File: persistence.xml
184
185 <persistence xmlns="http://java.sun.com/xml/ns/persistence"
186 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
187 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence" version="1.0">
188 <persistence-unit name="JPAService" transaction-type="RESOURCE_LOCAL">
189 <properties>
190 <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
191 <property name="hibernate.hbm2ddl.auto" value="update"/>
192 <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
193 <property name="hibernate.connection.username" value="sa"/>
194 <property name="hibernate.connection.password" value=""/>
195 <property name="hibernate.connection.url" value="jdbc:hsqldb:data/tutorial"/>
196 </properties>
197 </persistence-unit>
198 </persistence>