Skip to content
Snippets Groups Projects
Commit 2cb8b3be authored by Goik Martin's avatar Goik Martin
Browse files

MongoDB + JPA Exercise

parent 40727302
No related branches found
No related tags found
No related merge requests found
......@@ -45,6 +45,18 @@
</glossdef>
</glossentry>
<glossentry xml:id="glo_CRUD">
<glossterm>CRUD</glossterm>
<glossdef>
<para><link
xlink:href="https://en.wikipedia.org/wiki/Create,_read,_update_and_delete"><emphasis
role="bold">C</emphasis>reate, <emphasis role="bold">R</emphasis>ead,
<emphasis role="bold">U</emphasis>pdate and <emphasis
role="bold">D</emphasis>elete operations</link> </para>
</glossdef>
</glossentry>
<glossentry xml:id="glo_CSS">
<glossterm><acronym>CSS</acronym></glossterm>
......@@ -440,6 +452,24 @@
</glossdef>
</glossentry>
<glossentry xml:id="glo_MongoDB">
<glossterm>MongoDB</glossterm>
<glossdef>
<glosslist>
<glossentry xml:id="glo_Mongo_Shell">
<glossterm>Mongo Shell</glossterm>
<glossdef>
<para>Database <link
xlink:href="https://docs.mongodb.com/getting-started/shell/client">command
line client</link></para>
</glossdef>
</glossentry>
</glosslist>
</glossdef>
</glossentry>
<glossentry xml:id="glo_ORM">
<glossterm><acronym>ORM</acronym></glossterm>
......
......@@ -9,7 +9,7 @@
xmlns:db="http://docbook.org/ns/docbook">
<title>Getting started with <xref linkend="glo_JPA"/></title>
<section xml:id="sda1JpaLecture">
<section xml:id="sda1SectJpaLecture">
<title>Persisting lecture instances</title>
<qandaset defaultlabel="qanda" xml:id="sda1QandaLectureAddBusinessKey">
......
<?xml version="1.0" encoding="UTF-8"?>
<chapter version="5.0" xml:id="sda1ChapMongoDB"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook">
<title><productname>MongoDB</productname></title>
<section xml:id="sd1SectMongodbPrerequisite">
<title>Prerequisites</title>
<para><xref linkend="glo_Ubuntu"/> installation instructions are on offer
from <uri
xlink:href="https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/#run-mongodb-community-edition">https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu</uri>.</para>
<para>Follow <uri
xlink:href="https://docs.mongodb.com/getting-started/shell/introduction">https://docs.mongodb.com/getting-started/shell/introduction</uri>
populating your database with sample data. Insert, retrieve, update and
delete sample data like e.g.:</para>
<programlisting language="json">db.courses.insert(
{
"lecture" : {
"title" : "Introduction to JSON",
"required" : "10075",
"prerequisites" : "XXX"
},
"studyCourse" : "MIB",
"programme" : "Bachelor",
"recommendedSemesters" : [
{
"semester" : [3],
"comment" : "before doing practical stuff"
},
{
"semester" : [5,6,7],
"comment" : "After doing practical stuff"
}
],
"lecture_id" : 113213
}
)</programlisting>
</section>
<xi:include href="../Common/glossary.xml" xpointer="element(/1)"/>
</chapter>
......@@ -173,6 +173,7 @@
<xi:include href="Sda1/jdbc.xml" xpointer="element(/1)"/>
<xi:include href="Sda1/jpaintro.xml" xpointer="element(/1)"/>
<xi:include href="Sda1/mongodb.xml" xpointer="element(/1)"/>
<appendix>
<title>Appendix</title>
......
/target/
/.settings/
.classpath
.project
/A1.log
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.hdm-stuttgart.mi.sda1</groupId>
<artifactId>ogm-university</artifactId>
<version>0.1</version>
<packaging>jar</packaging>
<name>Ogm-university</name>
<url>http://www.mi.hdm-stuttgart.de/freedocs</url>
<dependencies>
<dependency>
<groupId>org.hibernate.ogm</groupId>
<artifactId>hibernate-ogm-mongodb</artifactId>
<version>5.1.0.Beta1</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.2_spec</artifactId>
<version>1.0.1.Final</version>
</dependency>
<!-- Add the Narayana Transactions Manager an implementation would be provided
in a Java EE container, but this works nicely in Java SE as well -->
<dependency>
<groupId>org.jboss.narayana.jta</groupId>
<artifactId>narayana-jta</artifactId>
<version>5.5.0.Final</version>
</dependency>
<dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-transaction-spi</artifactId>
<version>7.5.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.5</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
package de.hdm_stuttgart.mi.sda1.hiberjpa;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import de.hdm_stuttgart.mi.sda1.hiberjpa.model.Lecture;
/**
* A simple OGM example
*
*/
public class PersistDriver {
/**
* @param args Unused
*/
public static void main(String[] args) {
final EntityManagerFactory emFactory = Persistence
.createEntityManagerFactory("ogm-mongodb");
final EntityManager em = emFactory.createEntityManager();
em.getTransaction().begin();
{
em.persist(new Lecture("Structure data and applications 1"));
}
em.getTransaction().commit();
em.close();
emFactory.close();
}
}
package de.hdm_stuttgart.mi.sda1.hiberjpa.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.TableGenerator;
/**
* A simple example entity
*
*/
@Entity
public class Lecture {
@Id
@GeneratedValue (strategy = GenerationType.TABLE, generator = "lecture")
@TableGenerator(
name = "lecture",
table = "sequences",
pkColumnName = "key",
pkColumnValue = "lecture",
valueColumnName = "seed"
)
private Integer id;
String name;
protected Lecture (){}
public Lecture (final String name){
setName(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
}
<persistence
version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="ogm-mongodb" transaction-type="RESOURCE_LOCAL"> <!-- transaction-type="JTA" -->
<provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.ogm.datastore.provider" value="mongodb" />
<property name="hibernate.ogm.datastore.database" value="catalog" />
<property name="hibernate.ogm.datastore.create_database" value="true" />
</properties>
</persistence-unit>
</persistence>
<!--
<persistence-unit name="jpa-recreate">
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hdm?useSSL=false"/>
<property name="javax.persistence.jdbc.user" value="hdmuser"/>
<property name="javax.persistence.jdbc.password" value="XYZ"/>
<property
name="javax.persistence.schema-generation.database.action"
value="drop-and-create"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.archive.autodetection" value="class"/>
</properties>
</persistence-unit>
-->
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<File name="A1" fileName="A1.log" append="false">
<PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- You my want to define class or package level per-logger rules -->
<Logger name="de.hdm_stuttgart.mi.sda1.hiberjpa.App" level="debug">
<AppenderRef ref="A1"/>
</Logger>
<Root level="info">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
\ No newline at end of file
package de.hdm_stuttgart.mi.sda1.hiberjpa;
import org.junit.Assert;
import org.junit.Test;
/**
* Unit test for simple App.
*/
public class AppTest {
/**
* Dummy test method
*/
@Test
public void testApp() {
Assert.assertTrue( true );
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment