Я когда-то наследовал код, где кто-то мысль , что хранение IP-адресов как 4 интервала было действительно хорошей вещью, кроме, они провели все свое время, преобразовывая в интервал
Хранение их, поскольку строки в базе данных были намного легче, и это только потребовало единственного индекса. Вы были бы удивлены, как хорошо SQL-сервер может индексировать строки в противоположность 4 столбцам целых чисел. Но этот список IP не был для помещения в черный список. Распространение в прямом и обратном направлениях базы данных является довольно дорогостоящим.
, Если база данных является излишеством, сохраните их в словаре в памяти, но это - просто предположение, так как мы понятия не имеем, сколько необходимо сравнить. Так как большинство хэш-кодов является 32-разрядным интервалом, и адреса IPv4 составляют 32 бита, сам IP-адрес мог бы просто быть хорошим хэш-кодом.
, Но поскольку другие указывают, наилучший вариант мог бы состоять в том, чтобы уменьшить нагрузку на Ваш сервер и купить специализированные аппаратные средства. Возможно, Вы сохраняете недавно помещенный в черный список IP в памяти и периодически публикуете новый к маршрутизатору.
, Если Вы - тот, пытающийся сделать некоторое программное обеспечение в маршрутизаторе, тогда необходимо будет извлечь книгу структур данных и создать что-то как B-дерево.
Я предполагаю, что у вас проблемы с справочными документами Hibernate ?
Может быть этот учебник Hibernate будет лучше.
Path.GetFullPath
возможно?
Для меня было бы гораздо больше смысла, если бы доступная документация заняла бы позицию и активно подтолкнула бы меня в этом направлении вместо того, чтобы предлагать мне кучу вариантов и гадать, куда идти. Не имея этого, я извлек следующие уроки, преобразовав стандартный Hibernate Tutorial в аннотации.
Вот моя копия hibernate.cfg.xml. Он только устанавливает свойства и явно исключает любую конфигурацию сопоставления.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Information about the database to be used -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Misc. Hibernate configuration -->
<property name="hbm2ddl.auto">update</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">false</property>
</session-factory>
</hibernate-configuration>
Например , некоторые фрагменты из моей версии EventManager:
public final class EventManager {
private final SessionFactory sessionFactory;
/** Default constructor for use with JSPs */
public EventManager() {
this.sessionFactory = HibernateUtil.getSessionFactory();
}
/** @param Nonnull access to sessions with the data store */
public EventManager(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/** @return Nonnull events; empty if none exist */
public List<Event> getEvents() {
final Session db = this.sessionFactory.getCurrentSession();
return db.createCriteria(Event.class).list();
}
/**
* Creates and stores an Event for which no people are yet registered.
* @param title Nonnull; see {@link Event}
* @param date Nonnull; see {@link Event}
* @return Nonnull event that was created
*/
public Event createEvent(String title, Date date) {
final Event event = new Event(title, date, new HashSet<Person> ());
this.sessionFactory.getCurrentSession().save(event);
return event;
}
/**
* Registers the specified person for the specified event.
* @param personId ID of an existing person
* @param eventId ID of an existing event
*/
public void register(long personId, long eventId) {
final Session db = this.sessionFactory.getCurrentSession();
final Person person = (Person) db.load(Person.class, personId);
final Event event = (Event) db.load(Event.class, eventId);
person.addEvent(event);
event.register(person);
}
...other query / update methods...
}
Например, я считаю, что эту реализацию Event намного проще понять, если вы помните, что Hibernate обращается к полям прямо, когда это необходимо.
Я просто отправил вам ссылку, потому что у меня такая же проблема это хорошая ссылка для вас, которые используют Eclipse Hibernate Tool для Eclipse
некоторая полезная ссылка:
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#d0e2911
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/
http://boris.kirzner.info/blog/archives/2008/07/19/hibernate-annotations-the-many-to-many-association-with-composite-key/
http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/
но вы должны кое-что заметить 1- создайте свой объект (класс Java) 2- создать Дао для каждой сущности 3- Создать QueryManager и HibernateUtil (получить SessionFactory) 4- и сделайте свои репозитории (слой фасада)