Java осень 2012 лекция 9
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 211 views

 

Statistics

Views

Total Views
211
Views on SlideShare
210
Embed Views
1

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 1

https://tech-mail.ru 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Лекция 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.