SlideShare une entreprise Scribd logo
1  sur  20
Лекция 9. «ORM»
Содержат данные о программе не являясь частью программы
Могут влиять на работу компилятора, инструметов и библиотек
Не влияют непосредственно на работу приложения
Влияют только на ту функциональность, которая их обрабатывает
“Decorating” or “wrapping” классы в runtime
@Test
public void unitTestSomething(){…}
@Deprecated
class oldClass{…}
@NotNull
private Object object;
public int getUserId(@Nullable User user){…}
Обозначает устаревшую фукциональность
Отмечает методы, кторые переопределяют методы базового класса
Deprecated методы могут бять удалены в следующих версиях
Компилятор проверяет сигнатуры методов
Указание компилятору не сообщять об проблемах типа «warning»
@interface CreatedBy {
String author();
String date();
}
Не может наследовать или быть базовым классом
Может содержать методы без переменных, которые работают как поля
Не содержит конструкторов и полей
@CreatedBy (author = “tully”, date = “04.12.2012”)
public class MyClass {…}
@CreatedBy (author = “tully”, date = “05.12.2012”)
public static void main(String args[])
Class myClass = MyClass.class;
Method method = myClass.getMethod(“main”);
CreatedBy annotationC = myClass.getAnnotation(CreatedBy.class);
CreatedBy annotationM = method.getAnnotation(CreatedBy.class);
log.info(“Author of the class: ” + annotationC.author());
log.info(“Date of Writing the class: ” + annotationC.date());
log.info(“Author of the method: ” + annotationM.author());
log.info(“Date of Writing the method: ” + annotationM.date());
RetentionPolicy.SOURCE – аннотации присутствую только в коде
RetentionPolicy.CLASS – аннотации сохранеы в .class, но не доступны в runtime
Информация для компилятора
Информация для библиотек
Не доступны через reflection
Информация для инструментов IDE
RetentionPolicy.RUNTIME – аннотации сохранены в .class и доступны в runtime
Аннотации можно получать из getClass() через reflection
@Retention(RetentionPolicy.RUNTIME)
@interface CreatedBy {
String author();
String date();
}
@Retention – аннотация для указания типа аннотации
Связь между объектной моделью программы и реляционной моделью базы
Пример:
Методы DAO принимают объекты и сохраняют их в базе
Методы DAO возвращают объекты собирая их на основе запросов
http://sourceforge.net/projects/hibernate/files/hibernate4/4.1.8.Final/
Подключить к проекту все jar файлы из
Подключить к проекту драйвер базы данных:
Скачать Hibernate:
mysql-connector-java-5.1.22-bin.jar
./lib/required
Configuration configuration = new org.hibernate.cfg.Configuration();
configuration.setProperty(propertyName, propertyValue);
propertyName propertyValue
hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost:3306/Lecture8
hibernate.connection.username tully
hibernate.connection.password tully
hibernate.show_sql true
hibernate.hbm2ddl.auto update
ServiceRegistryBuilder builder = new ServiceRegistryBuilder();
builder.applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = builder.buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
System.out.append(transaction.getLocalStatus().toString());
session.close();
Фабрика которая создает сессии
Одна фабрика на приложение
Одна сессия на поток
import javax.persistence.*;
@Entity
@Table(name="users")
public class UserDataSet {
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name="name")
private String name;
…
}
configuration.addAnnotatedClass(UserDataSet.class);
Перед созданием SessionFactory:
Основной интерфейс между приложением и библиотекой
Время жизни сессии соответствует времени жизни транзакции
Задача сесии – работа с объектами проанотированными как @Entity
public void save(UserDataSet dataSet){
Session session = sessionFactory.openSession();
Transaction trx = session.beginTransaction();
session.save(dataSet);
trx.commit();
session.close();
}
public UserDataSet read(long id){
Session session = sessionFactory.openSession();
return (UserDataSet)session.load(UserDataSet.class, id);
}
1. История и особенности языка Java.
2. Платформа Java. Java Editions. GC, JVM, JDK, JRE. ByteCode.
3. Правила наименований. Запуск java приложений.
4. class Object и class Class<?>.
5. Простые типы в Java. Классы обертки простых типов.
6. Generics.
7. Коллекции в Java. Iterator, Iterable.
8. Processes and Threads.
9. Interface Runnable. class Thread. Методы start() и run().
10 Методы класса Thread: sleep(), interrupt(), join().
11. Ключевое слово synchronized.
12. Проблемы многопоточного доступа к данным. Race condition.
13. Deadlock. wait() и notify().
14. Плюсы и минусы многопоточных приложений.
15. Способы взаимодействия потоков.
16. MessageSystem. Address и Abonent.
17. Распределение классов по пакетам. Циклические зависимости.
18. Архитектура игрового сервера.
19. Процесс работы игрового сервера, репликация.
20. Виды тестирования.
21. GC. Виды GC. Параметры GC. Принципиальное устройство GC.
22. Random.
23. Singleton и Context.
24. Events, подписка на события.
25. Callback.
26. Анонимные классы.
27. Работа со временем и датой. Unix time. Locale.
28. I/O Streams. Потоки байт и потоки символов.
29. Сериализация/десериализация. Interface Serializable.
30. Ключевое слово transient.
31. Reflection. Роль reflection в сериализации.
32. Factory method pattern.
33. SAX парсер.
34. DOM парсер.
35. ResourceFactory. Роль ресурсов в игре.
36. JDBC API.
37. Драйвер базы данных.
38. class Connection.
39. Dependency Injection.
40. Statement.
41. ResultSet.
42. Transactions.
43. DataSet.
44. DAO.
45. Annotation.
46. Object Relational Mapping.
47. Frontend.
48. Game Mechanics.
49. Resource System.
50. Database System.
Java осень 2012 лекция 9

Contenu connexe

Tendances

Mikhail Valkov_Antipatterns
Mikhail Valkov_AntipatternsMikhail Valkov_Antipatterns
Mikhail Valkov_Antipatterns
Ciklum
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
metaform
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
metaform
 
Клиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхКлиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталях
Kirill Zotin
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
metaform
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
metaform
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
Technopark
 
Шаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoFШаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoF
Sergey Nemchinsky
 
Java осень 2012 лекция 7
Java осень 2012 лекция 7Java осень 2012 лекция 7
Java осень 2012 лекция 7
Technopark
 

Tendances (19)

МАИ, Сети ЭВМ, Лекция №4
МАИ, Сети ЭВМ, Лекция №4МАИ, Сети ЭВМ, Лекция №4
МАИ, Сети ЭВМ, Лекция №4
 
МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7
 
Mikhail Valkov_Antipatterns
Mikhail Valkov_AntipatternsMikhail Valkov_Antipatterns
Mikhail Valkov_Antipatterns
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, Loader
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Клиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталяхКлиент-серверное взаимодействие под android в деталях
Клиент-серверное взаимодействие под android в деталях
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Шаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoFШаблоны разработки ПО. Часть 3. Шаблоны GoF
Шаблоны разработки ПО. Часть 3. Шаблоны GoF
 
лр4 uml
лр4 umlлр4 uml
лр4 uml
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5
 
Java осень 2012 лекция 7
Java осень 2012 лекция 7Java осень 2012 лекция 7
Java осень 2012 лекция 7
 

Similaire à Java осень 2012 лекция 9

паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
guestfc8ae0
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
UA Mobile
 
Android - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsAndroid - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, generics
Noveo
 
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNGвебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
Andrey Rebrov
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
Technopark
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8
Technopark
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
Ontico
 

Similaire à Java осень 2012 лекция 9 (20)

C# Desktop. Занятие 08.
C# Desktop. Занятие 08.C# Desktop. Занятие 08.
C# Desktop. Занятие 08.
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
 
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Genome
GenomeGenome
Genome
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
Enterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianEnterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russian
 
Android - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsAndroid - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, generics
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNGвебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
 
C# Desktop. Занятие 07.
C# Desktop. Занятие 07.C# Desktop. Занятие 07.
C# Desktop. Занятие 07.
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 

Plus de Technopark

СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 

Plus de Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Java осень 2012 лекция 9

  • 2.
  • 3. Содержат данные о программе не являясь частью программы Могут влиять на работу компилятора, инструметов и библиотек Не влияют непосредственно на работу приложения Влияют только на ту функциональность, которая их обрабатывает “Decorating” or “wrapping” классы в runtime
  • 4. @Test public void unitTestSomething(){…} @Deprecated class oldClass{…} @NotNull private Object object; public int getUserId(@Nullable User user){…}
  • 5. Обозначает устаревшую фукциональность Отмечает методы, кторые переопределяют методы базового класса Deprecated методы могут бять удалены в следующих версиях Компилятор проверяет сигнатуры методов Указание компилятору не сообщять об проблемах типа «warning»
  • 6. @interface CreatedBy { String author(); String date(); } Не может наследовать или быть базовым классом Может содержать методы без переменных, которые работают как поля Не содержит конструкторов и полей @CreatedBy (author = “tully”, date = “04.12.2012”) public class MyClass {…} @CreatedBy (author = “tully”, date = “05.12.2012”) public static void main(String args[])
  • 7. Class myClass = MyClass.class; Method method = myClass.getMethod(“main”); CreatedBy annotationC = myClass.getAnnotation(CreatedBy.class); CreatedBy annotationM = method.getAnnotation(CreatedBy.class); log.info(“Author of the class: ” + annotationC.author()); log.info(“Date of Writing the class: ” + annotationC.date()); log.info(“Author of the method: ” + annotationM.author()); log.info(“Date of Writing the method: ” + annotationM.date());
  • 8. RetentionPolicy.SOURCE – аннотации присутствую только в коде RetentionPolicy.CLASS – аннотации сохранеы в .class, но не доступны в runtime Информация для компилятора Информация для библиотек Не доступны через reflection Информация для инструментов IDE RetentionPolicy.RUNTIME – аннотации сохранены в .class и доступны в runtime Аннотации можно получать из getClass() через reflection
  • 9. @Retention(RetentionPolicy.RUNTIME) @interface CreatedBy { String author(); String date(); } @Retention – аннотация для указания типа аннотации
  • 10.
  • 11. Связь между объектной моделью программы и реляционной моделью базы Пример: Методы DAO принимают объекты и сохраняют их в базе Методы DAO возвращают объекты собирая их на основе запросов
  • 12.
  • 13. http://sourceforge.net/projects/hibernate/files/hibernate4/4.1.8.Final/ Подключить к проекту все jar файлы из Подключить к проекту драйвер базы данных: Скачать Hibernate: mysql-connector-java-5.1.22-bin.jar ./lib/required
  • 14. Configuration configuration = new org.hibernate.cfg.Configuration(); configuration.setProperty(propertyName, propertyValue); propertyName propertyValue hibernate.dialect org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class com.mysql.jdbc.Driver hibernate.connection.url jdbc:mysql://localhost:3306/Lecture8 hibernate.connection.username tully hibernate.connection.password tully hibernate.show_sql true hibernate.hbm2ddl.auto update
  • 15. ServiceRegistryBuilder builder = new ServiceRegistryBuilder(); builder.applySettings(configuration.getProperties()); ServiceRegistry serviceRegistry = builder.buildServiceRegistry(); SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); System.out.append(transaction.getLocalStatus().toString()); session.close(); Фабрика которая создает сессии Одна фабрика на приложение Одна сессия на поток
  • 16. import javax.persistence.*; @Entity @Table(name="users") public class UserDataSet { @Id @Column(name="id") @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Column(name="name") private String name; … } configuration.addAnnotatedClass(UserDataSet.class); Перед созданием SessionFactory:
  • 17. Основной интерфейс между приложением и библиотекой Время жизни сессии соответствует времени жизни транзакции Задача сесии – работа с объектами проанотированными как @Entity public void save(UserDataSet dataSet){ Session session = sessionFactory.openSession(); Transaction trx = session.beginTransaction(); session.save(dataSet); trx.commit(); session.close(); } public UserDataSet read(long id){ Session session = sessionFactory.openSession(); return (UserDataSet)session.load(UserDataSet.class, id); }
  • 18.
  • 19. 1. История и особенности языка Java. 2. Платформа Java. Java Editions. GC, JVM, JDK, JRE. ByteCode. 3. Правила наименований. Запуск java приложений. 4. class Object и class Class<?>. 5. Простые типы в Java. Классы обертки простых типов. 6. Generics. 7. Коллекции в Java. Iterator, Iterable. 8. Processes and Threads. 9. Interface Runnable. class Thread. Методы start() и run(). 10 Методы класса Thread: sleep(), interrupt(), join(). 11. Ключевое слово synchronized. 12. Проблемы многопоточного доступа к данным. Race condition. 13. Deadlock. wait() и notify(). 14. Плюсы и минусы многопоточных приложений. 15. Способы взаимодействия потоков. 16. MessageSystem. Address и Abonent. 17. Распределение классов по пакетам. Циклические зависимости. 18. Архитектура игрового сервера. 19. Процесс работы игрового сервера, репликация. 20. Виды тестирования. 21. GC. Виды GC. Параметры GC. Принципиальное устройство GC. 22. Random. 23. Singleton и Context. 24. Events, подписка на события. 25. Callback. 26. Анонимные классы. 27. Работа со временем и датой. Unix time. Locale. 28. I/O Streams. Потоки байт и потоки символов. 29. Сериализация/десериализация. Interface Serializable. 30. Ключевое слово transient. 31. Reflection. Роль reflection в сериализации. 32. Factory method pattern. 33. SAX парсер. 34. DOM парсер. 35. ResourceFactory. Роль ресурсов в игре. 36. JDBC API. 37. Драйвер базы данных. 38. class Connection. 39. Dependency Injection. 40. Statement. 41. ResultSet. 42. Transactions. 43. DataSet. 44. DAO. 45. Annotation. 46. Object Relational Mapping. 47. Frontend. 48. Game Mechanics. 49. Resource System. 50. Database System.