java將類序列化並存儲到mysql(使用hibernate)


 Java 串行化技術可以使你將一個對象的狀態寫入一個Byte 流裏,並且可以從其它地方把該Byte 流裏的數據讀出來,重新構造一個相同的對象。這種機制允許你將對象通過網絡進行傳播,並可以隨時把對象持久化到數據庫、文件等系統裏。Java的串行化機制是RMI、EJB等技術的技術基礎。用途:利用對象的串行化實現保存應用程序的當前工作狀態,下次再啓動的時候將自動地恢復到上次執行的狀態。序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網絡之間。序列化是爲了解決在對對象流進行讀寫操作時所引發的問題。

   序列化的實現:將需要被序列化的類實現Serializable接口,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接着,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數爲obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。

  使用hibernate跟數據庫打交道  

  hibernate配置文件如下

1
com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/testtrueutf-8rootyou_passwordorg.hibernate.connection.C3P0ConnectionProvider20118001005002trueselect 1 1800025000trueorg.hibernate.dialect.MySQLInnoDBDialectupdatetruetrue

  hibernate實體類



<p style="line-height: 1.5em;"><span style="font-family: 宋體, simsun; font-size: 14px;"></span></p><table class="syntaxhighlighter  java" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="java keyword">package</code> <code class="java plain">test.java;</code></div><div class="line number2 index1 alt1"><code class="java keyword">import</code> <code class="java plain">java.sql.Blob;</code></div><div class="line number3 index2 alt2"><code class="java keyword">public</code> <code class="java keyword">class</code> <code class="java plain">Test {</code></div><div class="line number4 index3 alt1"><code class="java spaces">    </code><code class="java keyword">private</code> <code class="java keyword">int</code> <code class="java plain">id;</code></div><div class="line number5 index4 alt2"><code class="java spaces">    </code><code class="java keyword">private</code> <code class="java plain">Blob content;</code></div><div class="line number6 index5 alt1"><code class="java spaces">                                           </code> </div><div class="line number7 index6 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java plain">Blob getContent() {</code></div><div class="line number8 index7 alt1"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">content;</code></div><div class="line number9 index8 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number10 index9 alt1"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">setContent(Blob content) {</code></div><div class="line number11 index10 alt2"><code class="java spaces">        </code><code class="java keyword">this</code><code class="java plain">.content = content;</code></div><div class="line number12 index11 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number13 index12 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">int</code> <code class="java plain">getId() {</code></div><div class="line number14 index13 alt1"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">id;</code></div><div class="line number15 index14 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number16 index15 alt1"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">setId(</code><code class="java keyword">int</code> <code class="java plain">id) {</code></div><div class="line number17 index16 alt2"><code class="java spaces">        </code><code class="java keyword">this</code><code class="java plain">.id = id;</code></div><div class="line number18 index17 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number19 index18 alt2"><code class="java spaces">                                           </code> </div><div class="line number20 index19 alt1"><code class="java plain">}</code></div></div></td></tr></tbody></table><p style="line-height: 1.5em;"><span style="line-height: 1.5em; font-family: 宋體, simsun; font-size: 14px;">待序列化的類</span>
</p>



<p style="line-height: 1.5em;"><span style="font-family: 宋體, simsun; font-size: 14px;"></span></p><table class="syntaxhighlighter  java" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="java keyword">package</code> <code class="java plain">test.java;</code></div><div class="line number2 index1 alt1"><code class="java keyword">import</code> <code class="java plain">java.io.Serializable;</code></div><div class="line number3 index2 alt2"><code class="java keyword">public</code> <code class="java keyword">class</code> <code class="java plain">User </code><code class="java keyword">implements</code> <code class="java plain">Serializable{</code></div><div class="line number4 index3 alt1"><code class="java spaces">    </code><code class="java keyword">private</code> <code class="java keyword">int</code> <code class="java plain">id;</code></div><div class="line number5 index4 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">int</code> <code class="java plain">getId() {</code></div><div class="line number6 index5 alt1"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">id;</code></div><div class="line number7 index6 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number8 index7 alt1"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">setId(</code><code class="java keyword">int</code> <code class="java plain">id) {</code></div><div class="line number9 index8 alt2"><code class="java spaces">        </code><code class="java keyword">this</code><code class="java plain">.id = id;</code></div><div class="line number10 index9 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number11 index10 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java plain">String getName() {</code></div><div class="line number12 index11 alt1"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">name;</code></div><div class="line number13 index12 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number14 index13 alt1"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">setName(String name) {</code></div><div class="line number15 index14 alt2"><code class="java spaces">        </code><code class="java keyword">this</code><code class="java plain">.name = name;</code></div><div class="line number16 index15 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number17 index16 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">int</code> <code class="java plain">getAge() {</code></div><div class="line number18 index17 alt1"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">age;</code></div><div class="line number19 index18 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number20 index19 alt1"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">setAge(</code><code class="java keyword">int</code> <code class="java plain">age) {</code></div><div class="line number21 index20 alt2"><code class="java spaces">        </code><code class="java keyword">this</code><code class="java plain">.age = age;</code></div><div class="line number22 index21 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number23 index22 alt2"><code class="java spaces">    </code><code class="java keyword">private</code> <code class="java plain">String name;</code></div><div class="line number24 index23 alt1"><code class="java spaces">    </code><code class="java keyword">private</code> <code class="java keyword">int</code> <code class="java plain">age;</code></div><div class="line number25 index24 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table><p style="line-height: 1.5em;"><span style="line-height: 1.5em; font-family: 宋體, simsun; font-size: 14px;">測試類</span></p>


<table class="syntaxhighlighter  java" border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div><div class="line number39 index38 alt2">39</div><div class="line number40 index39 alt1">40</div><div class="line number41 index40 alt2">41</div><div class="line number42 index41 alt1">42</div><div class="line number43 index42 alt2">43</div><div class="line number44 index43 alt1">44</div><div class="line number45 index44 alt2">45</div><div class="line number46 index45 alt1">46</div><div class="line number47 index46 alt2">47</div><div class="line number48 index47 alt1">48</div><div class="line number49 index48 alt2">49</div><div class="line number50 index49 alt1">50</div><div class="line number51 index50 alt2">51</div><div class="line number52 index51 alt1">52</div><div class="line number53 index52 alt2">53</div><div class="line number54 index53 alt1">54</div><div class="line number55 index54 alt2">55</div><div class="line number56 index55 alt1">56</div><div class="line number57 index56 alt2">57</div><div class="line number58 index57 alt1">58</div><div class="line number59 index58 alt2">59</div><div class="line number60 index59 alt1">60</div><div class="line number61 index60 alt2">61</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="java keyword">package</code> <code class="java plain">test.java;</code></div><div class="line number2 index1 alt1"><code class="java keyword">import</code> <code class="java plain">java.io.ByteArrayInputStream;</code></div><div class="line number3 index2 alt2"><code class="java keyword">import</code> <code class="java plain">java.io.ByteArrayOutputStream;</code></div><div class="line number4 index3 alt1"><code class="java keyword">import</code> <code class="java plain">java.io.IOException;</code></div><div class="line number5 index4 alt2"><code class="java keyword">import</code> <code class="java plain">java.io.ObjectInputStream;</code></div><div class="line number6 index5 alt1"><code class="java keyword">import</code> <code class="java plain">java.io.ObjectOutputStream;</code></div><div class="line number7 index6 alt2"><code class="java keyword">import</code> <code class="java plain">java.sql.Blob;</code></div><div class="line number8 index7 alt1"><code class="java keyword">import</code> <code class="java plain">java.sql.SQLException;</code></div><div class="line number9 index8 alt2"><code class="java keyword">import</code> <code class="java plain">org.hibernate.Hibernate;</code></div><div class="line number10 index9 alt1"><code class="java keyword">import</code> <code class="java plain">org.hibernate.Session;</code></div><div class="line number11 index10 alt2"><code class="java keyword">import</code> <code class="java plain">org.hibernate.SessionFactory;</code></div><div class="line number12 index11 alt1"><code class="java keyword">import</code> <code class="java plain">org.hibernate.Transaction;</code></div><div class="line number13 index12 alt2"><code class="java keyword">import</code> <code class="java plain">org.hibernate.cfg.Configuration;</code></div><div class="line number14 index13 alt1"><code class="java keyword">public</code> <code class="java keyword">class</code> <code class="java plain">MySerialization {</code></div><div class="line number15 index14 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">static</code> <code class="java plain">SessionFactory sessionFactory=</code><code class="java keyword">null</code><code class="java plain">;</code></div><div class="line number16 index15 alt1"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">static</code> <code class="java plain">SessionFactory getSessionFactory(){</code></div><div class="line number17 index16 alt2"><code class="java spaces">        </code><code class="java keyword">if</code><code class="java plain">(sessionFactory==</code><code class="java keyword">null</code><code class="java plain">)</code></div><div class="line number18 index17 alt1"><code class="java spaces">            </code><code class="java plain">sessionFactory=</code><code class="java keyword">new</code> <code class="java plain">Configuration().configure(</code><code class="java string">"hibernate.cfg.xml"</code><code class="java plain">).buildSessionFactory();</code></div><div class="line number19 index18 alt2"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">sessionFactory;</code></div><div class="line number20 index19 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number21 index20 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">static</code> <code class="java plain">Blob getBlob(Object object) </code><code class="java keyword">throws</code> <code class="java plain">IOException{</code></div><div class="line number22 index21 alt1"><code class="java spaces">        </code><code class="java plain">ByteArrayOutputStream byteArrayOutputStream=</code><code class="java keyword">new</code> <code class="java plain">ByteArrayOutputStream();</code></div><div class="line number23 index22 alt2"><code class="java spaces">        </code><code class="java plain">ObjectOutputStream objectOutputStream=</code><code class="java keyword">new</code> <code class="java plain">ObjectOutputStream(byteArrayOutputStream);</code></div><div class="line number24 index23 alt1"><code class="java spaces">        </code><code class="java plain">objectOutputStream.writeObject(object);</code></div><div class="line number25 index24 alt2"><code class="java spaces">        </code><code class="java plain">ByteArrayInputStream bis=</code><code class="java keyword">new</code> <code class="java plain">ByteArrayInputStream(byteArrayOutputStream.toByteArray());</code></div><div class="line number26 index25 alt1"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">Hibernate.createBlob(bis);</code></div><div class="line number27 index26 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number28 index27 alt1"><code class="java spaces">       </code> </div><div class="line number29 index28 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">static</code> <code class="java keyword">void</code> <code class="java plain">writeObjectToDB(Object object) </code><code class="java keyword">throws</code> <code class="java plain">IOException{</code></div><div class="line number30 index29 alt1"><code class="java spaces">        </code><code class="java plain">Test test=</code><code class="java keyword">new</code> <code class="java plain">Test();</code></div><div class="line number31 index30 alt2"><code class="java spaces">        </code><code class="java plain">test.setContent(getBlob(object));</code></div><div class="line number32 index31 alt1"><code class="java spaces">        </code><code class="java plain">Session session=getSessionFactory().openSession();</code></div><div class="line number33 index32 alt2"><code class="java spaces">        </code><code class="java plain">Transaction tx =session.beginTransaction();</code></div><div class="line number34 index33 alt1"><code class="java spaces">        </code><code class="java plain">session.save(test);</code></div><div class="line number35 index34 alt2"><code class="java spaces">        </code><code class="java plain">tx.commit();</code></div><div class="line number36 index35 alt1"><code class="java spaces">        </code><code class="java plain">session.close();</code></div><div class="line number37 index36 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number38 index37 alt1"><code class="java spaces">       </code> </div><div class="line number39 index38 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">static</code> <code class="java plain">User readObjectFromDB(</code><code class="java keyword">int</code> <code class="java plain">id) </code><code class="java keyword">throws</code> <code class="java plain">IOException, SQLException, ClassNotFoundException{</code></div><div class="line number40 index39 alt1"><code class="java spaces">        </code><code class="java plain">Session session=getSessionFactory().openSession();</code></div><div class="line number41 index40 alt2"><code class="java spaces">        </code><code class="java plain">Test test=(Test) session.get(Test.</code><code class="java keyword">class</code><code class="java plain">,id);</code></div><div class="line number42 index41 alt1"><code class="java spaces">        </code><code class="java plain">ObjectInputStream objectInputStream=</code><code class="java keyword">new</code> <code class="java plain">ObjectInputStream(test.getContent().getBinaryStream());</code></div><div class="line number43 index42 alt2"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">(User)objectInputStream.readObject();</code></div><div class="line number44 index43 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div><div class="line number45 index44 alt2"><code class="java spaces">       </code> </div><div class="line number46 index45 alt1"><code class="java spaces">       </code> </div><div class="line number47 index46 alt2"><code class="java spaces">       </code> </div><div class="line number48 index47 alt1"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">static</code> <code class="java keyword">void</code> <code class="java plain">main(String[] args) </code><code class="java keyword">throws</code> <code class="java plain">IOException, SQLException, ClassNotFoundException {</code></div><div class="line number49 index48 alt2"><code class="java spaces">        </code><code class="java plain">User user=</code><code class="java keyword">new</code> <code class="java plain">User();</code></div><div class="line number50 index49 alt1"><code class="java spaces">        </code><code class="java plain">user.setId(</code><code class="java value">1</code><code class="java plain">);</code></div><div class="line number51 index50 alt2"><code class="java spaces">        </code><code class="java plain">user.setAge(</code><code class="java value">22</code><code class="java plain">);</code></div><div class="line number52 index51 alt1"><code class="java spaces">        </code><code class="java plain">user.setName(</code><code class="java string">"zhangsan"</code><code class="java plain">);</code></div><div class="line number53 index52 alt2"><code class="java spaces">        </code><code class="java plain">writeObjectToDB(user);</code></div><div class="line number54 index53 alt1"><code class="java spaces">           </code> </div><div class="line number55 index54 alt2"><code class="java spaces">        </code><code class="java plain">User user1=readObjectFromDB(</code><code class="java value">2</code><code class="java plain">);</code></div><div class="line number56 index55 alt1"><code class="java spaces">        </code><code class="java plain">System.out.println(user1.getId());</code></div><div class="line number57 index56 alt2"><code class="java spaces">        </code><code class="java plain">System.out.println(user1.getName());</code></div><div class="line number58 index57 alt1"><code class="java spaces">        </code><code class="java plain">System.out.println(user1.getAge());</code></div><div class="line number59 index58 alt2"><code class="java spaces">           </code> </div><div class="line number60 index59 alt1"><code class="java spaces">    </code><code class="java plain">}  </code></div><div class="line number61 index60 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table><p style="line-height: 1.5em;">
</p>


                                                                                                                                                                                                      文章轉載自:[169IT-最新最全的IT資訊]
                                                                                                                                                                          本文標題:java將類序列化並存儲到mysql(使用hibernate)

發佈了0 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章