Hello Rainer
thank you for your response. I sure like to help, if I can. What did
you have in mind? If you like, I could have a look at the example
trying to create a spring version of it.
regards, eike
On [Sun, 31.01.2010 10:44], Rainer Döbele wrote:
> Hello Eike,
>
> thank you very much for your Empire-db Spring tip and we very much appreciate
> your contribution.
> Personally I am not using Spring but I know that many people out there are.
> And I think we should give them some aid on how to best bring Empire-db and
> Spring together.
>
> So what we really need, is an example application that we can supply with our
> distribution.
> My idea is to take the basic example that we have (empire-db-example-basic)
> and provide a Spring version of it.
>
> Would you be willing to help us here?
> It be really great if you would.
>
> Looking forward to hearing from you.
> Best regards
>
> Rainer
>
>
> Eike Kettner wrote:
> > Re: Spring Configuration
> >
> >
> > Hi there
> >
> > As it happens that i like to use spring :), I might contribute to this
> > with something that works for me so far...
> >
> > as empire-db sits on top of JDBC, all I do is extending Springs
> > JDBCDaoSupport (calling it EmpireDaoSupport) and adding some setters
> > for the DBDatabase and DBDriver class. In the application context I
> > setup the DBDatabaseDriver and my DBDatabase and have them injected in
> > any Dao that extends the EmpireDaoSupport class. I have just played
> > with it using the BasicDatasource and a DatasourceTransactionManager
> > provided by commons-dbcp and spring. The database driver class and the
> > JDBC Settings are injected using normal placeholders from some
> > configuration file (xml or whatever you like, if it is a
> > java.util.Property at the end) - like you'd do it with spring.
> >
> > more concrete, my spring applicationXyz.xml:
> > <xml>
> > ...
> > <!-- Data Source / DB Settings -->
> > <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
> > destroy-method="close">
> > <property name="driverClassName" value="${jdbc.driverClassName}" />
> > <property name="url" value="${jdbc.url}" />
> > <property name="username" value="${jdbc.username}" />
> > <property name="password" value="${jdbc.password}" />
> > </bean>
> >
> > <!-- Transaction manager for a single JDBC DataSource -->
> > <bean id="transactionManager"
> > class="org.springframework.jdbc.datasource.DataSourceTransactionManager
> > ">
> > <constructor-arg ref="dataSource" />
> > </bean>
> > <bean id="transactionTemplate"
> > class="org.springframework.transaction.support.TransactionTemplate">
> > <property name="transactionManager" ref="transactionManager" />
> > </bean>
> >
> > <tx:annotation-driven transaction-manager="transactionManager" />
> >
> > <bean id="databaseDriver" class="${empiredb.drivername}">
> > <property name="databaseName" value="${empiredb.databasename}" />
> > </bean>
> > <!-- this is my DBDatabase subclass -->
> > <bean id="ebxDatabase" class="org.eknet.ebx.db.EbxDatabase">
> > </bean>
> >
> > <bean id="userDao" class="org.eknet.ebx.impl.UserDaoImpl">
> > <property name="dataSource" ref="dataSource" />
> > <property name="database" ref="ebxDatabase" />
> > <property name="databaseDriver" ref="databaseDriver" />
> > </bean>
> >
> >
> > And this is the EmpireDaoSupport class:
> >
> > public class EmpiredbDaoSupport extends JdbcDaoSupport {
> >
> > private DBDatabase db;
> > private DBDatabaseDriver dbdriver;
> >
> > public EmpiredbDaoSupport() {
> > }
> >
> > public void setDatabase(DBDatabase db) {
> > this.db = db;
> > }
> >
> > public void setDatabaseDriver(DBDatabaseDriver dbdriver) {
> > this.dbdriver = dbdriver;
> > }
> >
> > @Override
> > protected void checkDaoConfig() {
> > super.checkDaoConfig();
> > if (db == null)
> > throw new IllegalArgumentException("'database' must be given!");
> > if (dbdriver == null)
> > throw new IllegalArgumentException("'databaseDriver' must be
> > given!");
> > }
> >
> > public DBDatabase getDatabase() {
> > if (!db.isOpen())
> > db.open(dbdriver, getConnection());
> > return db;
> > }
> >
> > @SuppressWarnings("unchecked")
> > public <T extends DBDatabase> T getDB() {
> > return (T) getDatabase();
> > }
> >
> > public DBDatabaseDriver getDatabasedriver() {
> > return dbdriver;
> > }
> >
> > public RuntimeException translateEmpireException(EmpireException e) {
> > return new
> > DataAccessResourceFailureException(e.getLocalizedMessage());
> > }
> >
> > protected DBReader openReader(DBCommand cmd, Connection conn) {
> > DBReader r = new DBReader();
> > r.open(cmd, conn);
> > return r;
> > }
> >
> > }
> >
> > Then implementing any DAO object is the same like with jdbc or
> > hibernate - extend the support class and implement it with empire-db:
> >
> > public class UserDaoImpl extends EmpiredbDaoSupport implements UserDao
> > {
> >
> > @Override
> > public int findAllUserCount() {
> > EbxDatabase db = getDB();
> > Connection conn = getConnection();
> >
> > UserTable ut = db.TBL_USER;
> > DBCommand cmd = db.createCommand();
> > cmd.select(ut.count());
> > ...
> >
> > }
> >
> > bye, eike
> >
> > On [Mon, 04.01.2010 14:23], Jaco van Tonder wrote:
> > > Hello guys,
> > >
> > > I am busy investigating Empire-DB as a replacement for Hibernate in
> > our organization (so far so good). :) I have a couple of questions
> > though.
> > >
> > > I put together a config class that does not make use of a config file
> > (looked at the examples, and just used the defaults), but instead is
> > wired using Spring (simple setter injection). I could not find any
> > examples that uses this method so I am not sure if this is the best way
> > to do it. I looked at the source code and could not find any other way
> > of configuring Empire-DB that is not XML based.
> > >
> > > Q: Is there a recommended way of configuring Empire-DB using Spring?
> > >
> > > I read that there is no built-in transaction support. Obviously this
> > is important for databases. :)
> > >
> > > Q: What transaction managers are known to work well with Empire-DB?
> > JOTM, etc etc etc? Are there any examples of this available somewhere?
> > >
> > > I am willing to document any of the answers (ie spring configuration,
> > transaction manager examples) on the project wiki.
> > >
> > > Thank you in advance.
> > >
> > > ---Jaco
> > >
> > >
> > >
> > #######################################################################
> > ##############
> > > Attention:
> > > The information contained in this message and or attachments is
> > intended
> > > only for the person or entity to which it is addressed and may
> > contain
> > > confidential and/or privileged material. Any review, retransmission,
> > > dissemination or other use of, or taking of any action in reliance
> > upon,
> > > this information by persons or entities other than the intended
> > recipient
> > > is prohibited. If you received this in error, please contact the
> > sender and
> > > delete the material from any system and destroy any copies.
> > >
> > > Thank You.
> > >
> > #######################################################################
> > ##############
> > >
> > >
> > #######################################################################
> > ##############
> > > This e-mail message has been scanned for Viruses and Content and
> > cleared
> > > by MailMarshal
> > >
> > #######################################################################
> > ##############
> >
> > --
> > email: [email protected] https://www.eknet.org pgp: 481161A0
>
--
email: [email protected] https://www.eknet.org pgp: 481161A0