Is the file persistence.xml required?
Asked Answered
D

3

10

My development environment (IBM RAD 8 + WAS 8) is complaining that my project does not have a persistence.xml file. Still it seems that I can build and run my project. Is that file required and if a add one such file to make my project pass validation, what should be in that file?

The project is a web project that uses session beans and entity beans from other projects and this persistence.xml error is the only error in the project so I'd be glad to get rid of it.

Thanks for any help

Update

I searched my files for persistence.xml and it showed up in src/ and bin/ of the EJB project while the web project with servlets and jsp does not have a persistence.xml, according to my colleague the web project is using the persistence.xml from the EJB project i.e:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

    <persistence-unit name="PandoraArendeWeb" transaction-type="JTA">

        <jta-data-source>jdbc/Mainframe_TEST_ADBUTV2</jta-data-source>
        <class>se.prv.pandora.arendeprocess.entity.PRVNummer</class>
        <class>se.prv.pandora.arendeprocess.entity.Ansokan</class>
        <class>se.prv.pandora.arendeprocess.entity.NatAnsokan</class>
        <class>se.prv.pandora.arendeprocess.entity.PctAnsokan</class>
        <class>se.prv.pandora.arendeprocess.entity.ArendePerson</class>
        <class>se.prv.pandora.arendeprocess.entity.Nyregistrering</class>
        <class>se.prv.pandora.arendeprocess.entity.Anstalld</class>
        <class>se.prv.pandora.arendeprocess.entity.Handlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.OrgElement</class>
        <class>se.prv.pandora.arendeprocess.entity.FysiskHandlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.AnsvarigHandlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.AnsvarigFysiskHandlaggare</class>
        <class>se.prv.pandora.arendeprocess.entity.TeknikOmrade</class>
        <class>se.prv.pandora.arendeprocess.entity.Person</class>
        <class>se.prv.pandora.arendeprocess.entity.PRVNummerPerson</class>
        <class>se.prv.pandora.arendeprocess.entity.Notering</class>
        <class>se.prv.pandora.arendeprocess.entity.Lock</class>
        <class>se.prv.pandora.arendeprocess.entity.LandKod</class>
        <class>se.prv.pandora.arendeprocess.entity.ArbetsMomentLog</class>
        <class>se.prv.pandora.arendeprocess.entity.SystemTypDel</class>
        <class>se.prv.pandora.arendeprocess.entity.ArbetsMoment</class>
        <class>se.prv.pandora.arendeprocess.entity.UnderStatus</class>
        <class>se.prv.pandora.arendeprocess.entity.PatPers</class>
        <class>se.prv.pandora.arendeprocess.entity.PrvLandP</class>
        <class>se.prv.pandora.arendeprocess.entity.PkaPerln</class>
        <class>se.prv.pandora.arendeprocess.entity.PctnPerl</class>
        <class>se.prv.pandora.arendeprocess.entity.PersonToPatPersKoppl</class>
        <class>se.prv.pandora.arendeprocess.entity.PRVNummerPersonKoppl</class>
        <class>se.prv.pandora.arendeprocess.entity.Region</class>
        <class>se.prv.pandora.arendeprocess.entity.Historik</class>
        <class>se.prv.pandora.arendeprocess.entity.Egenskap</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>

    </persistence-unit>

<!-- <persistence-unit name="PandoraArendeWeb_MSSQL" transaction-type="JTA">

        <jta-data-source>jdbc/MSSQL_TEST_XA</jta-data-source>
        <class>se.prv.pandora.arendeprocess.entity.PersonSearch</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>

    </persistence-unit>
 -->    
</persistence>

enter image description here

Dallas answered 23/5, 2012 at 6:51 Comment(2)
I hope your persistence.xml is in WEB-INF/classes/META-INF/persistence.xml.Chatoyant
@Seshagirl thank you for the comment. Actually I found two persistence.xml in src/ and /bin in the EJB project while this project is the web project. My colleague who has been working on this said we should use this setup with no persistence.xml in the web project since the file is already in the EJB project. I now include the persistence.xml in the original question so that you can see better what is going on.Dallas
T
10

persistence.xml files usually contain details related to your database, such as connection strings and their respective user names and passwords including other ORM related information. These details can be placed in other locations so you need not explicitly have one, although having such a file usually makes all persistence related information available in one place which makes looking up certain settings and configurations easier.

This is a sample persistence.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="<PERSISTENCE UNIT NAME>">
        <properties>
            <!--
            <property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml"/>
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            -->
            <property name="hibernate.archive.autodetection" value="class, hbm"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.password" value="<PASSWORD>"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://<HOST IP ADDRESS>/<DB NAME>"/>
            <property name="hibernate.connection.username" value="<USERNAME>"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.c3p0.min_size" value="5"/>
            <property name="hibernate.c3p0.max_size" value="20"/>
            <property name="hibernate.c3p0.timeout" value="300"/>
            <property name="hibernate.c3p0.max_statements" value="50"/>
            <property name="hibernate.c3p0.idle_test_period" value="3000"/>
        </properties>
    </persistence-unit>
</persistence>

The above content was taken from here.

Tombolo answered 23/5, 2012 at 6:55 Comment(4)
Thanks for the answer. I spoke with my colleague who knew more about the project and he says we have no persistence.xml because that file is in the EJB project that this web project in its turn is using. So what I'm looking for now is some setting of RAD / Eclipse that can tell my environment that I have only one persistence.xml file for two projects in my IDE. (We don't use hibernate). I'll update the question with the actual file now.Dallas
@NickRosencrantz: If I where you I would not mess around with the settings of Eclipse, rather, I would put another persistance.xml file wherever Eclipse is expecting it an in it I would put a note on where to find the settings.Tombolo
Many thanks for the investigation. It turns out that my persistence.xml is part of the EJB project and no such file is part of the web project, which is the project I've been referring to, and together the form the EAR archive so my EAR archive does have a persistence.xml I now just wonder what the proper way to set this up is so that my IDE won't report this as an error. Should the web project and EJB project have the same version of the same file?Dallas
@NickRosencrantz: You could do that, but you will have to reflect the changes in both which could be problematic if it slips up your mind. Again, if I where you I would have 1 file (in this case) with the actual settings and any other files will just contain the location of the actual file.Tombolo
U
0
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="AINS" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

        <class>com.tridenthyundai.ains.domainobject.AccessoriesDO</class>
        <class>com.tridenthyundai.ains.domainobject.BranchDO</class>
        <class>com.tridenthyundai.ains.domainobject.ContactDO</class>
        <class>com.tridenthyundai.ains.domainobject.CustomerDO</class>
        <class>com.tridenthyundai.ains.domainobject.FinanceDO</class>
        <class>com.tridenthyundai.ains.domainobject.InsuranceDO</class>
        <class>com.tridenthyundai.ains.domainobject.MessageDO</class>
        <class>com.tridenthyundai.ains.domainobject.NotificationDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductPriceDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductSpecDO</class>
        <class>com.tridenthyundai.ains.domainobject.ProductVariantDO</class>
        <class>com.tridenthyundai.ains.domainobject.PurchaseDO</class>
        <class>com.tridenthyundai.ains.domainobject.ServiceCentreDO</class>
        <class>com.tridenthyundai.ains.domainobject.ServiceDO</class>
        <class>com.tridenthyundai.ains.domainobject.ServiceTypeDO</class>
        <class>com.tridenthyundai.ains.domainobject.UserDO</class>
        <class>com.tridenthyundai.ains.domainobject.VisitorDO</class>


        <!-- shouldn't be valid for java SE per specification, but it works for  EclipseLink ... -->
        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <!-- For Local Testing -->
        <!-- <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://saptalabs:3306/tridenthyundai" />
            <property name="javax.persistence.jdbc.user" value="adminuser" />
            <property name="javax.persistence.jdbc.password" value="adminuser" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />

            <property name="eclipselink.cache.shared.default" value="false"/>
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode" value="database" />
            <property name="eclipselink.logging.level" value="SEVERE" />        
        </properties> -->

        <!-- For Production -->

    </persistence-unit>
</persistence>
Unweave answered 4/2, 2016 at 4:28 Comment(0)
S
0
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="saptalabs" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

        <class>com.sapta.hr.domainobject.UserDO</class>
        <class>com.sapta.hr.domainobject.EmployeeDO</class>
        <class>com.sapta.hr.domainobject.AddressDO</class>
        <class>com.sapta.hr.domainobject.EmpDetailDO</class>
        <class>com.sapta.hr.domainobject.EmpAccDetailDO</class>
        <class>com.sapta.hr.domainobject.ProjectDO</class>
        <class>com.sapta.hr.domainobject.CustomerDO</class>
        <class>com.sapta.hr.domainobject.EmpAssignmentDO</class>
        <class>com.sapta.hr.domainobject.EmpAboutDO</class>
        <class>com.sapta.hr.domainobject.EmpAchievementsDO</class>
        <class>com.sapta.hr.domainobject.EmpEmploymentHistoryDO</class>
        <class>com.sapta.hr.domainobject.EmpSportsDO</class>
        <class>com.sapta.hr.domainobject.EmpCulturalsDO</class>
        <class>com.sapta.hr.domainobject.EmpEducationDO</class>
        <class>com.sapta.hr.domainobject.EmpLanguageKnownDO</class>
        <class>com.sapta.hr.domainobject.EmpReferencesDO</class>
        <class>com.sapta.hr.domainobject.EmpSkillSetDO</class>
        <class>com.sapta.hr.domainobject.EmpFamilyBackgroundDO</class>
        <class>com.sapta.hr.domainobject.AssetDO</class>
        <class>com.sapta.hr.domainobject.AssetTypeDO</class>
        <class>com.sapta.hr.domainobject.EmpCTCDO</class>
        <class>com.sapta.hr.domainobject.ExpenseDO</class>
        <class>com.sapta.hr.domainobject.ExpTypeDO</class>
        <class>com.sapta.hr.domainobject.InvoiceDO</class>
        <class>com.sapta.hr.domainobject.PayrollDO</class>
        <class>com.sapta.hr.domainobject.ProfessionalTaxDO</class>
        <class>com.sapta.hr.domainobject.TDSDO</class>
        <class>com.sapta.hr.domainobject.VendorDO</class>
        <class>com.sapta.hr.domainobject.BillsDO</class>
        <class>com.sapta.hr.domainobject.EmpLoseOfPayDO</class>

        <!-- shouldn't be valid for java SE per specification, but it works for 
            EclipseLink ... -->
        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <!-- For Local Testing -->
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hrportal" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="root" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="eclipselink.cache.shared.default" value="false" />
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                value="database" />
            <property name="eclipselink.logging.level" value="SEVERE" />
        </properties>
    </persistence-unit>
</persistence>
Supplemental answered 22/2, 2017 at 14:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.