Skip to content

Commit ecaeb5e

Browse files
author
eugenp
committed
persistence work
1 parent bcfc7d9 commit ecaeb5e

File tree

15 files changed

+341
-37
lines changed

15 files changed

+341
-37
lines changed

spring-hibernate3/.classpath

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<attribute name="maven.pomderived" value="true"/>
77
</attributes>
88
</classpathentry>
9+
<classpathentry kind="src" path="src/test/java"/>
910
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
1011
<attributes>
1112
<attribute name="maven.pomderived" value="true"/>

spring-hibernate3/.project

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,6 @@
55
<projects>
66
</projects>
77
<buildSpec>
8-
<buildCommand>
9-
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
10-
<triggers>full,incremental,</triggers>
11-
<arguments>
12-
<dictionary>
13-
<key>LaunchConfigHandle</key>
14-
<value>&lt;project&gt;/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch
15-
</value>
16-
</dictionary>
17-
</arguments>
18-
</buildCommand>
198
<buildCommand>
209
<name>org.eclipse.jdt.core.javabuilder</name>
2110
<arguments>
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,95 @@
11
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
3+
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
4+
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
5+
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
6+
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
27
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
38
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
49
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
510
org.eclipse.jdt.core.compiler.compliance=1.7
611
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
712
org.eclipse.jdt.core.compiler.debug.localVariable=generate
813
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
14+
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
915
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
16+
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
17+
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
18+
org.eclipse.jdt.core.compiler.problem.deadCode=warning
19+
org.eclipse.jdt.core.compiler.problem.deprecation=warning
20+
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
21+
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
22+
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
23+
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
1024
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
25+
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
26+
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
27+
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
28+
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
29+
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
30+
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
1131
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
32+
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
33+
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
34+
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
35+
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
36+
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
37+
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
38+
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
39+
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
40+
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
41+
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
42+
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
43+
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
44+
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
45+
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
46+
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
47+
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
48+
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
49+
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
50+
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
51+
org.eclipse.jdt.core.compiler.problem.nullReference=warning
52+
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
53+
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
54+
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
55+
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
56+
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
57+
org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
58+
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
59+
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
60+
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
61+
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
62+
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
63+
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
64+
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
65+
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
66+
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
67+
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
68+
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
69+
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
70+
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
71+
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
72+
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
73+
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
74+
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
75+
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
76+
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
77+
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
78+
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
79+
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
80+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
81+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
82+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
83+
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
84+
org.eclipse.jdt.core.compiler.problem.unusedImport=warning
85+
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
86+
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
87+
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
88+
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
89+
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
90+
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
91+
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
92+
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
93+
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
94+
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
1295
org.eclipse.jdt.core.compiler.source=1.7

spring-hibernate3/.settings/org.eclipse.wst.common.component

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
55
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
66
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
7+
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
78
<property name="java-output-path" value="/spring-hibernate3/target/classes"/>
89
<property name="context-root" value="spring-hibernate3"/>
910
</wb-module>

spring-hibernate3/pom.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,20 @@
5656

5757
<!-- test scoped -->
5858

59+
<dependency>
60+
<groupId>org.apache.commons</groupId>
61+
<artifactId>commons-lang3</artifactId>
62+
<version>3.1</version>
63+
<scope>test</scope>
64+
</dependency>
65+
66+
<dependency>
67+
<groupId>org.springframework</groupId>
68+
<artifactId>spring-test</artifactId>
69+
<version>${org.springframework.version}</version>
70+
<scope>test</scope>
71+
</dependency>
72+
5973
<dependency>
6074
<groupId>junit</groupId>
6175
<artifactId>junit-dep</artifactId>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package org.baeldung.spring.persistence.dao;
2+
3+
import java.io.Serializable;
4+
import java.util.List;
5+
6+
import org.hibernate.Session;
7+
import org.hibernate.SessionFactory;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
10+
import com.google.common.base.Preconditions;
11+
12+
@SuppressWarnings("unchecked")
13+
public abstract class AbstractHibernateDao<T extends Serializable> implements IOperations<T> {
14+
private Class<T> clazz;
15+
16+
@Autowired
17+
private SessionFactory sessionFactory;
18+
19+
// API
20+
21+
protected final void setClazz(final Class<T> clazzToSet) {
22+
clazz = clazzToSet;
23+
}
24+
25+
@Override
26+
public final T findOne(final long id) {
27+
return ((T) getCurrentSession().get(clazz, id));
28+
}
29+
30+
@Override
31+
public final List<T> findAll() {
32+
return getCurrentSession().createQuery("from " + clazz.getName()).list();
33+
}
34+
35+
@Override
36+
public final long create(final T entity) {
37+
Preconditions.checkNotNull(entity);
38+
return (Long) getCurrentSession().save(entity);
39+
}
40+
41+
@Override
42+
public final T update(final T entity) {
43+
Preconditions.checkNotNull(entity);
44+
return (T) getCurrentSession().merge(entity);
45+
}
46+
47+
@Override
48+
public final void delete(final T entity) {
49+
Preconditions.checkNotNull(entity);
50+
getCurrentSession().delete(entity);
51+
}
52+
53+
@Override
54+
public final void deleteById(final long entityId) {
55+
final T entity = findOne(entityId);
56+
Preconditions.checkState(entity != null);
57+
delete(entity);
58+
}
59+
60+
protected final Session getCurrentSession() {
61+
return sessionFactory.getCurrentSession();
62+
}
63+
64+
}

spring-hibernate3/src/main/java/org/baeldung/spring/persistence/dao/FooDao.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package org.baeldung.spring.persistence.dao;
22

3+
import org.baeldung.spring.persistence.model.Foo;
34
import org.springframework.stereotype.Repository;
45

56
@Repository
6-
public class FooDao implements IFooDao {
7+
public class FooDao extends AbstractHibernateDao<Foo> implements IFooDao {
78

89
public FooDao() {
910
super();
11+
12+
setClazz(Foo.class);
1013
}
1114

1215
// API
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.baeldung.spring.persistence.dao;
22

3-
public interface IFooDao {
3+
import org.baeldung.spring.persistence.model.Foo;
4+
5+
public interface IFooDao extends IOperations<Foo> {
46
//
57
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.baeldung.spring.persistence.dao;
2+
3+
import java.io.Serializable;
4+
import java.util.List;
5+
6+
public interface IOperations<T extends Serializable> {
7+
8+
T findOne(final long id);
9+
10+
List<T> findAll();
11+
12+
long create(final T entity);
13+
14+
T update(final T entity);
15+
16+
void delete(final T entity);
17+
18+
void deleteById(final long entityId);
19+
20+
}

spring-hibernate3/src/main/java/org/baeldung/spring/persistence/model/Foo.java

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,33 @@
11
package org.baeldung.spring.persistence.model;
22

3+
import java.io.Serializable;
4+
5+
import javax.persistence.Column;
36
import javax.persistence.Entity;
47
import javax.persistence.GeneratedValue;
58
import javax.persistence.GenerationType;
69
import javax.persistence.Id;
710

811
@Entity
9-
public class Foo {
12+
public class Foo implements Serializable {
1013

1114
@Id
1215
@GeneratedValue(strategy = GenerationType.AUTO)
1316
private long id;
1417

18+
@Column(nullable = false)
19+
private String name;
20+
1521
public Foo() {
1622
super();
1723
}
1824

25+
public Foo(final String name) {
26+
super();
27+
28+
this.name = name;
29+
}
30+
1931
// API
2032

2133
public long getId() {
@@ -26,6 +38,46 @@ public void setId(final long id) {
2638
this.id = id;
2739
}
2840

41+
public String getName() {
42+
return name;
43+
}
44+
45+
public void setName(final String name) {
46+
this.name = name;
47+
}
48+
2949
//
3050

51+
@Override
52+
public int hashCode() {
53+
final int prime = 31;
54+
int result = 1;
55+
result = prime * result + ((name == null) ? 0 : name.hashCode());
56+
return result;
57+
}
58+
59+
@Override
60+
public boolean equals(final Object obj) {
61+
if (this == obj)
62+
return true;
63+
if (obj == null)
64+
return false;
65+
if (getClass() != obj.getClass())
66+
return false;
67+
final Foo other = (Foo) obj;
68+
if (name == null) {
69+
if (other.name != null)
70+
return false;
71+
} else if (!name.equals(other.name))
72+
return false;
73+
return true;
74+
}
75+
76+
@Override
77+
public String toString() {
78+
final StringBuilder builder = new StringBuilder();
79+
builder.append("Foo [name=").append(name).append("]");
80+
return builder.toString();
81+
}
82+
3183
}

0 commit comments

Comments
 (0)