-
1. Re: how can I create a simple database aplication?
anewton Jan 5, 2008 5:02 PM (in response to mussie)I'm no Seam expert. In fact, I'm very new to it. But I've been quite a bit of time trying to convert the registration example to use Maven. And I'm pretty sure it uses a database.
There are two things to look for:
1) If you downloaded JBoss AS, the registration example is probably using the built-in HSQL in-memory database. You can either reconfigure JBoss to use HSQL as a disk-based database, or point it to some other database.
2) The persistence.xml in the registration example has "create-drop" under the hibernate.hbm2ddl.auto property. That will drop and the create your database tables every time the app comes up, I think. Another setting, such as "update" might be in order. You'll probably have to look at the Hibernate docs to find the right answer.
I hope that helps.
-andy -
2. Re: how can I create a simple database aplication?
mussie Jan 6, 2008 12:40 PM (in response to mussie)Where can I configure Jboss to use HSQL as a disk based database?
And where can I see the entries of the database?
thanks and best regards,
Mussie -
3. Re: how can I create a simple database aplication?
mussie Jan 6, 2008 1:41 PM (in response to mussie)OK found out where to configure jboss to use HSQL as a database, its in $JBOSS_HOME/server/default/deploy/ejb3.deployer/META-INF/persistence.properties correct me if I'm wrong.
But is it really necessary to change that file! I thought its enough to change the persistence.xml in the booking example from create-drop
to update.
But unfortunately after restarting my server I can't login with my username and password which I registered earlier.
Anyone has an idea?.
thanks and best regards,
Mussie -
4. Re: how can I create a simple database aplication?
pmuir Jan 6, 2008 4:28 PM (in response to mussie)Create a datasource that points to e.g. a mysql database, and alter the example to use it. Also make sure to use validate hibernate.hbm2ddl.auto property in persistence.xml (you'll need to make sure the tables exist in the database.
-
5. Re: how can I create a simple database aplication?
mussie Jan 6, 2008 7:42 PM (in response to mussie)Can't I use HSQL DB why mysql? And whats the sence of update if I have to validate the database?
I thought hibernate generates the db relations out of my entities?
Or do I have to create a database first with relations and attributes like username and password and then create the entities with username and password and after that hibernate is going to validate and map my entities to the database?
If this is correct does anyone know an example reference with JBoss Seam and HSQL DB?
And why are all the examples with in memory based persistence I can't picture any use-case for that.
Like I mentioned before I'm new to this topic so maybe some of you can give me some enlightenment.
best regards,
Mussie -
6. Re: how can I create a simple database aplication?
pmuir Jan 7, 2008 5:26 AM (in response to mussie)"Mussie" wrote:
Can't I use HSQL DB why mysql?
Yes, just configure a HSQL in persistent mode in -ds.xmlAnd whats the sence of update if I have to validate the database?
I thought hibernate generates the db relations out of my entities?
Then use create-drop, but loose your data, or use update.And why are all the examples with in memory based persistence I can't picture any use-case for that.
Because it's great for examples. Read the hsql docs, its a 2 line change to make it persistent, and without the tables being create-droped. -
7. Re: how can I create a simple database aplication?
mussie Jan 7, 2008 11:29 AM (in response to mussie)Hello again,
I changed create-drop to update in the persistence.xml.
Now I found out that in case of update the booking service can't find any hotels (no hotels found).
When I change the persistence.xml back to create-drop I can find hotels again!? Does anyone know why?
thanks and best regards,
Mussie -
8. Re: how can I create a simple database aplication?
pmuir Jan 7, 2008 11:33 AM (in response to mussie)Import.sql is only run by hibernate in create/create-drop.
-
9. Re: how can I create a simple database aplication?
mussie Jan 8, 2008 5:26 AM (in response to mussie)hello,
is it correct that I have to change the hsqldb into server mode to make the data persistent? I tried to do so by changing the hsqldb-ds. But when I start my hsql database manager it is still in in-memory type only the URL changed to jdbc:hsqldb:hsql://127.0.0.1:1701.
Does anyone know why?
This is how my hsqldb-ds looks like.<?xml version="1.0" encoding="UTF-8"?> <!-- The Hypersonic embedded database JCA connection factory config --> <!-- $Id: hsqldb-ds.xml 63175 2007-05-21 16:26:06Z rrajesh $ --> <datasources> <local-tx-datasource> <!-- The jndi name of the DataSource, it is prefixed with java:/ --> <!-- Datasources are not available outside the virtual machine --> <jndi-name>DefaultDS</jndi-name> <!-- For server mode db, allowing other processes to use hsqldb over tcp. This requires the org.jboss.jdbc.HypersonicDatabase mbean.--> <connection-url>jdbc:hsqldb:hsql://${jboss.bind.address}:1701</connection-url> <!-- For totally in-memory db, not saved when jboss stops. The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown <connection-url>jdbc:hsqldb:.</connection-url> --> <!-- For in-process persistent db, saved when jboss stops. The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}localDB</connection-url> --> <!-- The driver class --> <driver-class>org.hsqldb.jdbcDriver</driver-class> <!-- The login and password --> <user-name>sa</user-name> <password></password> <!--example of how to specify class that determines if exception means connection should be destroyed--> <!--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name--> <!-- this will be run before a managed connection is removed from the pool for use by a client--> <!--<check-valid-connection-sql>select * from something</check-valid-connection-sql> --> <!-- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use --> <min-pool-size>5</min-pool-size> <!-- The maximum connections in a pool/sub-pool --> <max-pool-size>20</max-pool-size> <!-- The time before an unused connection is destroyed --> <!-- NOTE: This is the check period. It will be destroyed somewhere between 1x and 2x this timeout after last use --> <!-- TEMPORARY FIX! - Disable idle connection removal, HSQLDB has a problem with not reaping threads on closed connections --> <idle-timeout-minutes>0</idle-timeout-minutes> <!-- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> --> <!-- sql to call on an existing pooled connection when it is obtained from pool <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> --> <!-- example of how to specify a class that determines a connection is valid before it is handed out from the pool <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyValidConnectionChecker</valid-connection-checker-class-name> --> <!-- Whether to check all statements are closed when the connection is returned to the pool, this is a debugging feature that should be turned off in production --> <track-statements/> <!-- Use the getConnection(user, pw) for logins <application-managed-security/> --> <!-- Use the security domain defined in conf/login-config.xml --> <security-domain>HsqlDbRealm</security-domain> <!-- Use the security domain defined in conf/login-config.xml or the getConnection(user, pw) for logins. The security domain takes precedence. <security-domain-and-application>HsqlDbRealm</security-domain-and-application> --> <!-- HSQL DB benefits from prepared statement caching --> <prepared-statement-cache-size>32</prepared-statement-cache-size> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> <metadata> <type-mapping>Hypersonic SQL</type-mapping> </metadata> <!-- When using in-process (standalone) mode <depends>jboss:service=Hypersonic,database=localDB</depends>--> <!-- Uncomment when using hsqldb in server mode--> <depends>jboss:service=Hypersonic</depends> </local-tx-datasource> <!-- Uncomment if you want hsqldb accessed over tcp (server mode)--> <mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic"> <attribute name="Port">1701</attribute> <attribute name="BindAddress">${jboss.bind.address}</attribute> <attribute name="Silent">true</attribute> <attribute name="Database">default</attribute> <attribute name="Trace">false</attribute> <attribute name="No_system_exit">true</attribute> </mbean> <!-- For hsqldb accessed from jboss only, in-process (standalone) mode <mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic,database=localDB"> <attribute name="Database">localDB</attribute> <attribute name="InProcessMode">true</attribute> </mbean> --> </datasources>
-
10. Re: how can I create a simple database aplication?
mussie Jan 9, 2008 5:07 AM (in response to mussie)Is this the right place to post my question or should I post it to HSQL Forum? Anyway if someone knows what is wrong with my hsqldb-ds I'd appreciate it or is there a tutorial or example with Jboss Java5 and HSQL persistence (not in memory). Because this is all I need an example of an application where I can store user acounts in a hsqldb not only as long as the server runs. I want to find those acounts in the db even if I restart my server (PC)!
Can anyone help me out?
thanks and best regards,
Mussie -
11. Re: how can I create a simple database aplication?
pmuir Jan 9, 2008 7:41 PM (in response to mussie)ds questions should go on a jboss AS forum (probably a newbie forum).