Elipse :: java »» Project DAO
:: voorbeeld (sample user , klant : database mysql).
Structuur :
[-]prjdao (project)
| |
| [-]config (map)
| |
klant.hbm.xml
| |
user.hbm.xml
| |
| [-]src (package)
| |
main.java
| |
Klant.java
| |
User.java
| |
KlantDao.java
| |
UserDao.java
| |
HibernateFactory.java
| |
ConstructDao.java
| |
DataAccessError.java
| [+] JRE System Library
| [+] xerces-2.6.2.jar
| [+] ant-antlr-1.6.3.jar
| [+] antlr-2.7.5H3.jar
| [+] asm.jar
| [+] asm-attrs.jar
| [+] cglib-2.1.jar
| [+] commons-collections-2.1.1.jar
| [+] commons-logging-1.0.4.jar
| [+] dom4j-1.6.jar
| [+] ehache-1.1.jar
| [+] hibernate3.jar
| [+] hsqldb.jar
| [+] jta.jar
| [+] log4j-1.2.9.jar
| [+] mysql-connector-java-3.1.6-bin.jar
|
hibernate.cfg.xml
log4j.properties
1.--- begin main.java ------
package src;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date now = new Date ();
/*
* User toevoegen aan de database
*/
System.out.println("user toegevoegd voor");
UserDao userDao = new UserDao();
User user = new User();
userDao.create(user);
user.setNaam("De Gavere");
user.setWachtwoord("gaverzicht");
user.setAansluiting(now);
userDao.update(user);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>user
toegevoegd");
userDao.findAll();
/*
* Klant toevoegen aan de database
*/
KlantDao klantDao = new KlantDao();
Klant klant = new Klant();
klantDao.create(klant);
klant.setVoornaam("Kere-gerom");
klant.setAchternaam("Reuzegom");
klant.setStraat("Lange Wapperstraat");
klant.setHuisnr("12");
klant.setPostnr("8640");
klant.setGemeente("Papoptvier");
klantDao.update(klant);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>klant
toegevoegd");
klantDao.findAll();
System.out.println("Einde main");
}
}
--- einde Main java ------ top
2.--- begin Klant.java ------
package src;
public class Klant {//implements Serializable {
private Long id;
private String voonaam;
private String achternaam;
private String straat;
private String huisnr;
private String postnr;
private String gemeente;
public Long getId() {return id;}
public void setId(Long id) {this.id = id;}
public String getVoornaam() {return voonaam;}
public void setVoornaam(String voonaam) {this.voonaam = voonaam;}
public String getAchternaam() {return achternaam;}
public void setAchternaam(String achternaam) {this.achternaam = achternaam;}
public String getStraat() {return straat;}
public void setStraat(String straat) {this.straat = straat;}
public String getHuisnr() {return huisnr;}
public void setHuisnr(String huisnr) {this.huisnr = huisnr;}
public String getPostnr() {return postnr;}
public void setPostnr(String postnr) {this.postnr = postnr;}
public String getGemeente() {return gemeente;}
public void setGemeente(String gemeente) {this.gemeente = gemeente;}
}
--- einde Klant.java ------
top
3.--- begin User.java ------
package src;
import java.util.Date;
public class User {
private Long id;
private int werkniveau;
private String naam;
private String wachtwoord;
private Date aansluiting;
public Long getId() {return id;}
public void setId(Long id) {this.id = id;}
public String getNaam() {return naam;}
public void setNaam(String naam) {System.out.println("in klant :naam");this.naam
= naam;}
public String getWachtwoord() {return wachtwoord;}
public void setWachtwoord(String wachtwoord) {this.wachtwoord = wachtwoord;}
public Date getAansluiting() {return aansluiting;}
public void setAansluiting(Date aansluiting) {this.aansluiting = aansluiting;}
public int getwerkniveau() {return werkniveau;}
public void setwerkniveau(int werkniveau) {this.werkniveau = werkniveau;}
}
--- einde User.java ------
top
4.--- begin HibernateFactory.java
------
package src;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.apache.commons.logging.*;
public class HibernateFactory {
private static SessionFactory sessionFactory;
private static Log log = LogFactory.getLog(HibernateFactory.class);
/*
* Maakt een nieuwe Singleton SessionFactory aan
*/
public static SessionFactory buildSessionFactory() throws
HibernateException {
System.out.println("sessionfact build");
if (sessionFactory != null) {
closeFactory();
}
return configureSessionFactory();
}
/*
* Maakt een nieuwe Singleton SessionFactory aan indien nodig.
*/
public static SessionFactory buildIfNeeded() throws
DataAccessError{
if (sessionFactory != null) {
return sessionFactory;
}
try {
return
configureSessionFactory();
} catch (HibernateException err) {
throw new DataAccessError("build if
needed mislukt >> "+err);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session openSession() throws HibernateException {
buildIfNeeded();
return sessionFactory.openSession();
}
public static void closeFactory() {
if (sessionFactory != null) {
try {
sessionFactory.close();
} catch (HibernateException ignored)
{
log.error("SessionFactory
kon niet afgesloten worden", ignored);
}
}
}
public static void close(Session session) {
if (session != null) {
try {
session.close();
} catch (HibernateException ignored)
{
log.error("Session kon niet
afgesloten worden", ignored);
}
}
}
public static void rollback(Transaction trans) {
try {
if (trans != null) {
trans.rollback();
System.out.println("Terugschroeven");
}
} catch (HibernateException ignored) {
log.error("Transaction-terugschroeven
(rollback) is mislukt", ignored);
}
}
/*
* Configuratie SessionFactory
*/
private static SessionFactory configureSessionFactory() throws
HibernateException {
Configuration configuration = new Configuration();
configuration.configure();
sessionFactory = configuration.buildSessionFactory();
return sessionFactory;
}
}
--- einde HibernateFactory.java ------
top
5.--- begin
ConstructDao.java -----
package src;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
import java.util.List;
public abstract class ConstructDao {
private Session session;
private Transaction trans;
public ConstructDao() {
System.out.println("maak indien nodig");
HibernateFactory.buildIfNeeded();
}
protected void saveOrUpdate(Object obj) {
try {
System.out.println("saveOrUpdate");
openSessionTrans();
session.saveOrUpdate(obj);
trans.commit();
} catch (HibernateException err) {
handleException(err);
} finally {
HibernateFactory.rollback(trans);
HibernateFactory.close(session);
}
}
protected void delete(Object object) {
try {
openSessionTrans();
session.delete(object);
trans.commit();
} catch (HibernateException err) {
handleException(err);
} finally {
HibernateFactory.close(session);
}
}
protected Object find(Class clazz, Long id) {
Object object = null;
try {
openSessionTrans();
object = session.load(clazz, id);
trans.commit();
} catch (HibernateException err) {
handleException(err);
} finally {
HibernateFactory.close(session);
}
return object;
}
protected List findAll(Class clazz) {
List objects = null;
try {
openSessionTrans();
Query query = session.createQuery("from
" + clazz.getName());
objects = query.list();
trans.commit();
} catch (HibernateException err) {
handleException(err);
} finally {
HibernateFactory.close(session);
}
return objects;
}
protected void handleException(HibernateException err) throws DataAccessError {
HibernateFactory.rollback(trans);
throw new DataAccessError(err);
}
protected void openSessionTrans() throws HibernateException {
System.out.println("openSessionTrans");
session = HibernateFactory.openSession();
trans = session.beginTransaction();
}
}
--- einde ConstructDao.java ------
top
6.--- begin KlantDao.java
------
package src;
import java.util.List;
public class KlantDao extends ConstructDao {
public KlantDao() {
super();
}
/*
* Nieuwe Klant toevoegen aan database.
*/
public void create(Klant klant) throws DataAccessError {
super.saveOrUpdate(klant);
}
/*
* Een Klant verwijderen van de database.
*/
public void delete(Klant klant) throws DataAccessError {
super.delete(klant);
}
/*
* Een Klant vinden met de primary key.
*/
public Klant find(Long id) throws DataAccessError {
System.out.print("klant update");
return (Klant) super.find(Klant.class, id);
}
/*
* Klant toevoegen aan - of wijzigen in de database.
*/
public void update(Klant klant) throws DataAccessError {
System.out.print("klant update");
super.saveOrUpdate(klant);
}
/**
* Zoek alle klanten in de database.
*/
public List findAll() throws DataAccessError{
return super.findAll(Klant.class);
}
}
--- einde klantDao.java ------
top
7.--- begin UserDao.java ------
package src;
import java.util.List;
public class UserDao extends ConstructDao {
public UserDao() {
super();
}
/*
* Een User toevoegen aan - wijzigen in de database.
*/
public void create(User user) throws DataAccessError {
super.saveOrUpdate(user);
}
/*
* Een User verwijderen uit de database.
*/
public void delete(User user) throws DataAccessError {
super.delete(user);
}
/**
* Find an Event by its primary key.
* @param id
* @return
*/
public User find(Long id) throws DataAccessError {
return (User) super.find(User.class, id);
}
/*
* User toevoegen aan - of wijzigen in de database.
*/
public void update(User user) throws DataAccessError {
System.out.println(">>>>> user update");
super.saveOrUpdate(user);
}
/*
* Haal alle users op uit de database.
*/
public List findAll() throws DataAccessError{
return super.findAll(User.class);
}
}
--- einde UserDao.java ------
top
8.--- begin DataAccesError.java ------
package src;
/*
* Exceptions opgeworpen door de Data Access Layer.
*/
public class DataAccessError extends RuntimeException {
public DataAccessError() {
}
public DataAccessError(String message) {
super(message);
}
public DataAccessError(Throwable cause) {
super(cause);
}
public DataAccessError(String message, Throwable cause) {
super(message, cause);
}
}
--- einde DataAccesError.java ------
top
map config
klant.hbm.xml
user.hbm.xml
1.--- begin klant.hbm.xml
------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="src.Klant" table="klanten">
<id name="id" column="id"
type="long">
<generator class="increment"/>
</id>
<property name="voornaam" type="string"/>
<property name="achternaam" type="string"/>
<property name="straat" type="string"/>
<property name="huisnr" type="string"/>
<property name="postnr" type="string"/>
<property name="gemeente" type="string"/>
</class>
</hibernate-mapping>
--- einde klant.hbm.xml ------
top
2.--- begin user.hbm.xml ------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="src.User" table="users">
<id name="id" column="id"
type="long">
<generator class="increment"/>
</id>
<property name="naam" type="string"/>
<property name="wachtwoord" type="string"/>
<property name="aansluiting"
type="date"/>
<property name="werkniveau"
type="integer"/>
</class>
</hibernate-mapping>
--- einde user.hbm.xml ------
top
project prjdao
hibernate.cfg.xml
log4j.properties
1.--- begin hibernate.cfg.xml
------
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/mysqltest</property>
<property name="connection.username">db-usernaam</property>
<property name="connection.password">uwpaswoord</property>
<!-- JDBC connection pool (use the
built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Echo all executed SQL to stdout
-->
<property name="show_sql">true</property>
<mapping resource="config/User.hbm.xml"/>
<mapping resource="config/Klant.hbm.xml"/>
</session-factory>
</hibernate-configuration>
--- einde hibernate.cfg.xml ------
top
2.--- begin log4j.properties ------
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=
org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=
org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=
%-4r [%t] %-5p %c %x - %m%n
--- einde log4j.properties ------
top
Tables mysql database "mysqltest"
-- phpMyAdmin SQL Dump -- version 2.6.1-pl3 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generatie Tijd: 17 Aug 2007 om 17:40 -- Server versie: 5.0.24 -- PHP Versie: 5.0.3 -- -- Database: `mysqltest` --
-- --------------------------------------------------------
-- -- Tabel structuur voor tabel `klanten` --
CREATE TABLE `klanten` ( `id` bigint(20) NOT NULL auto_increment, `voornaam` varchar(30) default NULL, `achternaam` varchar(15) default NULL, `straat` varchar(30) default NULL, `huisnr` varchar(10) default NULL, `postnr` varchar(4) default NULL, `gemeente` varchar(30) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;
-- -- Gegevens worden uitgevoerd voor tabel `klanten` --
INSERT INTO `klanten` VALUES (1, 'Reuzegom', 'Kere-gerom', 'Smallestraat', '12', '8640', 'Tzalbeteren'); INSERT INTO `klanten` VALUES (2, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Tzalbeteren'); INSERT INTO `klanten` VALUES (3, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Tzalbeteren'); INSERT INTO `klanten` VALUES (4, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Tzalbeteren'); INSERT INTO `klanten` VALUES (5, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Tzalbeteren'); INSERT INTO `klanten` VALUES (6, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (7, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (8, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (9, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (10, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (11, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (12, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (13, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (14, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (15, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (16, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (17, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (18, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (19, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (20, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (21, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (22, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (23, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (24, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (25, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (26, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (27, 'Kere-gerom', 'Reuzegom', 'Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (28, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (29, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (30, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (31, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (32, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (33, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (34, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier'); INSERT INTO `klanten` VALUES (35, 'Kere-gerom', 'Reuzegom', 'Lange Wapperstraat', '12', '8640', 'Papoptvier');
-- phpMyAdmin SQL Dump -- version 2.6.1-pl3 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generatie Tijd: 17 Aug 2007 om 17:41 -- Server versie: 5.0.24 -- PHP Versie: 5.0.3 -- -- Database: `mysqltest` --
-- --------------------------------------------------------
-- -- Tabel structuur voor tabel `users` --
CREATE TABLE `users` ( `id` bigint(20) NOT NULL auto_increment, `naam` varchar(30) default NULL, `wachtwoord` varchar(10) default NULL, `aansluiting` date default NULL, `werkniveau` int(11) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
-- -- Gegevens worden uitgevoerd voor tabel `users` --
INSERT INTO `users` VALUES (1, 'dillems', 'blabla', '2007-07-29', 1); INSERT INTO `users` VALUES (2, 'De Vlucht', 'Wachtwoord', '2007-08-08', 0); INSERT INTO `users` VALUES (3, 'De Vlucht', 'Wachtwoord', '2007-08-08', 0); INSERT INTO `users` VALUES (4, 'De Gavere', 'gaverzicht', '2007-08-08', 0); INSERT INTO `users` VALUES (5, 'De Gavere', 'gaverzicht', '2007-08-08', 0); INSERT INTO `users` VALUES (6, 'De Gavere', 'gaverzicht', '2007-08-09', 0); INSERT INTO `users` VALUES (7, 'De Gavere', 'gaverzicht', '2007-08-09', 0); INSERT INTO `users` VALUES (8, 'De Gavere', 'gaverzicht', '2007-08-09', 0); INSERT INTO `users` VALUES (9, 'De Gavere', 'gaverzicht', '2007-08-09', 0); INSERT INTO `users` VALUES (10, NULL, NULL, NULL, 0); INSERT INTO `users` VALUES (11, 'De Gavere', 'gaverzicht', '2007-08-17', 0); INSERT INTO `users` VALUES (12, 'De Gavere', 'gaverzicht', '2007-08-17', 0);
Resultaat prjdao
|