Source code: org/hibernate/test/stateless/StatelessSessionTest.java
1 //$Id: StatelessSessionTest.java 9705 2006-03-28 19:59:31Z steve.ebersole@jboss.com $
2 package org.hibernate.test.stateless;
3
4 import java.util.Date;
5
6 import junit.framework.Test;
7 import junit.framework.TestSuite;
8
9 import org.hibernate.ScrollMode;
10 import org.hibernate.ScrollableResults;
11 import org.hibernate.StatelessSession;
12 import org.hibernate.Transaction;
13 import org.hibernate.test.TestCase;
14
15 /**
16 * @author Gavin King
17 */
18 public class StatelessSessionTest extends TestCase {
19
20 public StatelessSessionTest(String str) {
21 super(str);
22 }
23
24 public void testCreateUpdateReadDelete() {
25 StatelessSession ss = getSessions().openStatelessSession();
26 Transaction tx = ss.beginTransaction();
27 Document doc = new Document("blah blah blah", "Blahs");
28 ss.insert(doc);
29 assertNotNull( doc.getName() );
30 Date initVersion = doc.getLastModified();
31 assertNotNull( initVersion );
32 tx.commit();
33
34 tx = ss.beginTransaction();
35 doc.setText("blah blah blah .... blah");
36 ss.update(doc);
37 assertNotNull( doc.getLastModified() );
38 assertNotSame( doc.getLastModified(), initVersion );
39 tx.commit();
40
41 tx = ss.beginTransaction();
42 doc.setText("blah blah blah .... blah blay");
43 ss.update(doc);
44 tx.commit();
45
46 Document doc2 = (Document) ss.get(Document.class.getName(), "Blahs");
47 assertEquals("Blahs", doc2.getName());
48 assertEquals(doc.getText(), doc2.getText());
49
50 doc2 = (Document) ss.createQuery("from Document where text is not null").uniqueResult();
51 assertEquals("Blahs", doc2.getName());
52 assertEquals(doc.getText(), doc2.getText());
53
54 ScrollableResults sr = ss.createQuery("from Document where text is not null")
55 .scroll(ScrollMode.FORWARD_ONLY);
56 sr.next();
57 doc2 = (Document) sr.get(0);
58 sr.close();
59 assertEquals("Blahs", doc2.getName());
60 assertEquals(doc.getText(), doc2.getText());
61
62 doc2 = (Document) ss.createSQLQuery("select * from Document")
63 .addEntity(Document.class)
64 .uniqueResult();
65 assertEquals("Blahs", doc2.getName());
66 assertEquals(doc.getText(), doc2.getText());
67
68 doc2 = (Document) ss.createCriteria(Document.class).uniqueResult();
69 assertEquals("Blahs", doc2.getName());
70 assertEquals(doc.getText(), doc2.getText());
71
72 sr = ss.createCriteria(Document.class).scroll(ScrollMode.FORWARD_ONLY);
73 sr.next();
74 doc2 = (Document) sr.get(0);
75 sr.close();
76 assertEquals("Blahs", doc2.getName());
77 assertEquals(doc.getText(), doc2.getText());
78
79 tx = ss.beginTransaction();
80 ss.delete(doc);
81 tx.commit();
82 ss.close();
83
84 }
85
86 public void testHqlBulk() {
87 StatelessSession ss = getSessions().openStatelessSession();
88 Transaction tx = ss.beginTransaction();
89 Document doc = new Document("blah blah blah", "Blahs");
90 ss.insert(doc);
91 Paper paper = new Paper();
92 paper.setColor( "White" );
93 ss.insert(paper);
94 tx.commit();
95
96 tx = ss.beginTransaction();
97 int count = ss.createQuery( "update Document set name = :newName where name = :oldName" )
98 .setString( "newName", "Foos" )
99 .setString( "oldName", "Blahs" )
100 .executeUpdate();
101 assertEquals( "hql-update on stateless session", 1, count );
102 count = ss.createQuery( "update Paper set color = :newColor" )
103 .setString( "newColor", "Goldenrod" )
104 .executeUpdate();
105 assertEquals( "hql-update on stateless session", 1, count );
106 tx.commit();
107
108 tx = ss.beginTransaction();
109 count = ss.createQuery( "delete Document" ).executeUpdate();
110 assertEquals( "hql-delete on stateless session", 1, count );
111 count = ss.createQuery( "delete Paper" ).executeUpdate();
112 assertEquals( "hql-delete on stateless session", 1, count );
113 tx.commit();
114 ss.close();
115 }
116
117 public void testInitId() {
118 StatelessSession ss = getSessions().openStatelessSession();
119 Transaction tx = ss.beginTransaction();
120 Paper paper = new Paper();
121 paper.setColor( "White" );
122 ss.insert(paper);
123 assertNotNull( paper.getId() );
124 tx.commit();
125
126 tx = ss.beginTransaction();
127 ss.delete( ss.get( Paper.class, paper.getId() ) );
128 tx.commit();
129 ss.close();
130 }
131
132 public void testRefresh() {
133 StatelessSession ss = getSessions().openStatelessSession();
134 Transaction tx = ss.beginTransaction();
135 Paper paper = new Paper();
136 paper.setColor( "whtie" );
137 ss.insert( paper );
138 tx.commit();
139 ss.close();
140
141 ss = getSessions().openStatelessSession();
142 tx = ss.beginTransaction();
143 Paper p2 = ( Paper ) ss.get( Paper.class, paper.getId() );
144 p2.setColor( "White" );
145 ss.update( p2 );
146 tx.commit();
147 ss.close();
148
149 ss = getSessions().openStatelessSession();
150 tx = ss.beginTransaction();
151 assertEquals( "whtie", paper.getColor() );
152 ss.refresh( paper );
153 assertEquals( "White", paper.getColor() );
154 ss.delete( paper );
155 tx.commit();
156 ss.close();
157 }
158
159
160 protected String[] getMappings() {
161 return new String[] { "stateless/Document.hbm.xml" };
162 }
163
164 public static Test suite() {
165 return new TestSuite(StatelessSessionTest.class);
166 }
167
168 }
169