DAO v prostém JDBC – pro srovnání.
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/java/SpringDemo1/SpringDemo1-ejb/src/java/cz/frantovo/springDemo1/dao/KnihaDAOjdbc.java Wed Feb 10 23:11:38 2010 +0100
1.3 @@ -0,0 +1,78 @@
1.4 +package cz.frantovo.springDemo1.dao;
1.5 +
1.6 +import cz.frantovo.springDemo1.KnihaDAOjdbcRemote;
1.7 +import cz.frantovo.springDemo1.dto.Kniha;
1.8 +import java.sql.Connection;
1.9 +import java.sql.PreparedStatement;
1.10 +import java.sql.ResultSet;
1.11 +import java.sql.Statement;
1.12 +import java.util.ArrayList;
1.13 +import java.util.Collection;
1.14 +import java.util.logging.Level;
1.15 +import java.util.logging.Logger;
1.16 +import javax.annotation.Resource;
1.17 +import javax.ejb.Stateless;
1.18 +import javax.sql.DataSource;
1.19 +
1.20 +/**
1.21 + *
1.22 + * @author fiki
1.23 + */
1.24 +@Stateless
1.25 +public class KnihaDAOjdbc implements KnihaDAOjdbcRemote {
1.26 +
1.27 + @Resource(mappedName = "jdbc/sqlVyuka/piskoviste")
1.28 + private DataSource dataSource;
1.29 + private static final Logger log = Logger.getLogger(KnihaDAOjdbc.class.getSimpleName());
1.30 +
1.31 + public Collection<Kniha> getKnihy() {
1.32 + Collection<Kniha> vysledek = new ArrayList<Kniha>();
1.33 + Connection db = null;
1.34 + PreparedStatement ps = null;
1.35 + ResultSet rs = null;
1.36 + try {
1.37 + db = dataSource.getConnection();
1.38 + ps = db.prepareStatement("SELECT * FROM sbirka.kniha;");
1.39 + rs = ps.executeQuery();
1.40 + while (rs.next()) {
1.41 + Kniha k = new Kniha();
1.42 + k.setNazev(rs.getString("nazev"));
1.43 + k.setAutor(rs.getInt("autor"));
1.44 + k.setDatumAktualizace(rs.getDate("datum"));
1.45 + k.setId(rs.getInt("id"));
1.46 + k.setIsbn(rs.getString("isbn"));
1.47 + k.setPocetStran(rs.getInt("pocet_stran"));
1.48 + k.setRokVydani(rs.getInt("rok_vydani"));
1.49 + vysledek.add(k);
1.50 + }
1.51 + } catch (Exception e) {
1.52 + log.log(Level.SEVERE, "Chyba načítání knížek.", e);
1.53 + return null;
1.54 + } finally {
1.55 + zavri(db, ps, rs);
1.56 + }
1.57 +
1.58 + return vysledek;
1.59 + }
1.60 +
1.61 + protected static void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) {
1.62 + if (vysledek != null) {
1.63 + try {
1.64 + vysledek.close();
1.65 + } catch (Exception e) {
1.66 + }
1.67 + }
1.68 + if (prikaz != null) {
1.69 + try {
1.70 + prikaz.close();
1.71 + } catch (Exception e) {
1.72 + }
1.73 + }
1.74 + if (spojeni != null) {
1.75 + try {
1.76 + spojeni.close();
1.77 + } catch (Exception e) {
1.78 + }
1.79 + }
1.80 + }
1.81 +}
2.1 --- a/java/SpringDemo1/SpringDemo1-ejb/src/java/cz/frantovo/springDemo1/dao/KnihaRowMapper.java Wed Feb 10 21:23:45 2010 +0100
2.2 +++ b/java/SpringDemo1/SpringDemo1-ejb/src/java/cz/frantovo/springDemo1/dao/KnihaRowMapper.java Wed Feb 10 23:11:38 2010 +0100
2.3 @@ -17,6 +17,7 @@
2.4 k.setAutor(rs.getInt("autor"));
2.5 k.setDatumAktualizace(rs.getDate("datum"));
2.6 k.setId(rs.getInt("id"));
2.7 + k.setIsbn(rs.getString("isbn"));
2.8 k.setPocetStran(rs.getInt("pocet_stran"));
2.9 k.setRokVydani(rs.getInt("rok_vydani"));
2.10 return k;
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/java/SpringDemo1/SpringDemo1-lib/src/cz/frantovo/springDemo1/KnihaDAOjdbcRemote.java Wed Feb 10 23:11:38 2010 +0100
3.3 @@ -0,0 +1,16 @@
3.4 +package cz.frantovo.springDemo1;
3.5 +
3.6 +import cz.frantovo.springDemo1.dto.Kniha;
3.7 +import java.util.Collection;
3.8 +import javax.ejb.Remote;
3.9 +
3.10 +/**
3.11 + *
3.12 + * @author fiki
3.13 + */
3.14 +@Remote
3.15 +public interface KnihaDAOjdbcRemote {
3.16 +
3.17 + public Collection<Kniha> getKnihy();
3.18 +
3.19 +}
4.1 --- a/java/SpringDemo1/SpringDemo1-war/src/java/cz/frantovo/springDemo1/web/SpringDemo1Bean.java Wed Feb 10 21:23:45 2010 +0100
4.2 +++ b/java/SpringDemo1/SpringDemo1-war/src/java/cz/frantovo/springDemo1/web/SpringDemo1Bean.java Wed Feb 10 23:11:38 2010 +0100
4.3 @@ -1,7 +1,7 @@
4.4 package cz.frantovo.springDemo1.web;
4.5
4.6 import cz.frantovo.springDemo1.KnihaDAORemote;
4.7 -import cz.frantovo.springDemo1.dao.KnihaDAO;
4.8 +import cz.frantovo.springDemo1.KnihaDAOjdbcRemote;
4.9 import cz.frantovo.springDemo1.dto.Kniha;
4.10 import java.util.Collection;
4.11 import java.util.logging.Level;
4.12 @@ -18,22 +18,44 @@
4.13
4.14 private static final Logger log = Logger.getLogger(SpringDemo1Bean.class.getSimpleName());
4.15 private KnihaDAORemote knihaDAO;
4.16 + private KnihaDAOjdbcRemote knihaDAOjdbc;
4.17
4.18 + /** Spring JdbcTemplate */
4.19 public Collection<Kniha> getKnihy() {
4.20 - return lookupCilDAO().getKnihy();
4.21 + return lookupKnihaDAO().getKnihy();
4.22 }
4.23
4.24 - private KnihaDAORemote lookupCilDAO() {
4.25 + /** JDBC */
4.26 + public Collection<Kniha> getKnihyJdbc() {
4.27 + return lookupKnihaDAOjdbc().getKnihy();
4.28 + }
4.29 +
4.30 + /** Spring JdbcTemplate */
4.31 + private KnihaDAORemote lookupKnihaDAO() {
4.32 if (knihaDAO == null) {
4.33 try {
4.34 Context c = new InitialContext();
4.35 knihaDAO = (KnihaDAORemote) c.lookup("cz.frantovo.springDemo1.KnihaDAORemote");
4.36 } catch (NamingException e) {
4.37 - log.log(Level.SEVERE, "Chyba při hledání CilDAO", e);
4.38 + log.log(Level.SEVERE, "Chyba při hledání KnihaDAO", e);
4.39 throw new RuntimeException(e);
4.40 }
4.41 }
4.42 return knihaDAO;
4.43 }
4.44
4.45 + /** JDBC */
4.46 + private KnihaDAOjdbcRemote lookupKnihaDAOjdbc() {
4.47 + if (knihaDAOjdbc == null) {
4.48 + try {
4.49 + Context c = new InitialContext();
4.50 + knihaDAOjdbc = (KnihaDAOjdbcRemote) c.lookup("cz.frantovo.springDemo1.KnihaDAOjdbcRemote");
4.51 + } catch (NamingException e) {
4.52 + log.log(Level.SEVERE, "Chyba při hledání KnihaDAOjdbc", e);
4.53 + throw new RuntimeException(e);
4.54 + }
4.55 + }
4.56 + return knihaDAOjdbc;
4.57 + }
4.58 +
4.59 }
5.1 --- a/java/SpringDemo1/SpringDemo1-war/web/index.jsp Wed Feb 10 21:23:45 2010 +0100
5.2 +++ b/java/SpringDemo1/SpringDemo1-war/web/index.jsp Wed Feb 10 23:11:38 2010 +0100
5.3 @@ -10,19 +10,34 @@
5.4 <html xmlns="http://www.w3.org/1999/xhtml">
5.5 <head>
5.6 <title>SpringDemo1</title>
5.7 + <link href="styl.css" type="text/css" rel="StyleSheet"/>
5.8 </head>
5.9 <body>
5.10 <h1>SpringDemo1</h1>
5.11 - <p>Spring JDBC…</p>
5.12 + <p>Spring JdbcTemplate</p>
5.13 <p>Vypíšeme seznam knih:</p>
5.14
5.15 <jsp:useBean id="demo" class="cz.frantovo.springDemo1.web.SpringDemo1Bean" scope="request"/>
5.16 - <ul>
5.17 - <c:forEach var="kniha" items="${demo.knihy}">
5.18 - <li><c:out value="${kniha.nazev}"/></li>
5.19 - </c:forEach>
5.20 - </ul>
5.21 -
5.22 + <table>
5.23 + <thead>
5.24 + <tr>
5.25 + <td>Název knihy</td>
5.26 + <td>Rok vydání</td>
5.27 + <td>Počet stran</td>
5.28 + <td>ISBN</td>
5.29 + </tr>
5.30 + </thead>
5.31 + <tbody>
5.32 + <c:forEach var="kniha" items="${demo.knihyJdbc}">
5.33 + <tr>
5.34 + <td><c:out value="${kniha.nazev}"/></td>
5.35 + <td><c:out value="${kniha.rokVydani}"/></td>
5.36 + <td><c:out value="${kniha.pocetStran}"/></td>
5.37 + <td><c:out value="${kniha.isbn}"/></td>
5.38 + </tr>
5.39 + </c:forEach>
5.40 + </tbody>
5.41 + </table>
5.42
5.43 </body>
5.44 </html>
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/java/SpringDemo1/SpringDemo1-war/web/styl.css Wed Feb 10 23:11:38 2010 +0100
6.3 @@ -0,0 +1,15 @@
6.4 +table {
6.5 + border: 1px solid gray;
6.6 + border-collapse: collapse;
6.7 +}
6.8 +
6.9 +td {
6.10 + border: 1px solid gray;
6.11 + padding: 2px 4px;
6.12 +}
6.13 +
6.14 +thead {
6.15 + background-color: silver;
6.16 + font-weight: bold;
6.17 +}
6.18 +